Coredata第一課 認識coredata,coredata第一課認識

來源:互聯網
上載者:User

Coredata第一課 認識coredata,coredata第一課認識
問題

在iOS/Mac中我們有許多方式去持久化儲存資料:NSUserDefault、Key chain、C語言檔案介面、NSFileHandle、基礎架構中的write方法、歸檔等等。在實際應用中,我們經常需要將這些資料按一定格式轉換為對象,並且進行一定的篩選等操作然後再使用,顯得不是很方便。Apple給我們提供了Core Data架構,可以直接按對象的方式操作資料,讓這些變得非常簡單。

簡介

CoreData中有這麼幾個常用的元素:

名稱 作用
NSManagedObjectModel 物件模型,指定所用對象檔案
NSPersistentStoreCoordinator 持久化儲存協調器,設定對象的儲存方式和資料存放位置
NSManagedObjectContext 對象管理上下文,負責資料的實際操作(重要)
NSEntityDescriptor 實體描述符,描述一個實體,可以用來產生實體對應的對象
NSManagedObject 對象
NSFetchRequest 物件查詢,相當於SQL的Select語句

使用步驟

在這篇文章中我們使用最簡單的方式,也就是在建立項目的時候,勾選“Core Data”選項。Xcode會自動替我們在“AppDelegate”中加入建立“NSManagedObjectModel”、“NSPersistentStoreCoordinate”和“NSManagedObjectContext”等對象,方便後面的使用。

1 . 建立“NSManagedObjectModel”對象。

- (NSManagedObjectModel *)managedObjectModel {    if (_managedObjectModel != nil) {        return _managedObjectModel;    }    //CoreData模型檔案的路徑,注意編譯好的模型檔案名稱副檔名為"momd"    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreData01" withExtension:@"momd"];    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    return _managedObjectModel;}

2 . 建立“NSPersistentStoreCoordinator”對象。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {    if (_persistentStoreCoordinator != nil) {        return _persistentStoreCoordinator;    }    //指定需要持久化的模型對象    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];    //持久化的隱藏檔    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreData01.sqlite"];    NSError *error = nil;    //設定儲存格式為SQLite    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {    }    return _persistentStoreCoordinator;}

3 . 建立上下文

- (NSManagedObjectContext *)managedObjectContext {    // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.)    if (_managedObjectContext != nil) {        return _managedObjectContext;    }    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];    if (!coordinator) {        return nil;    }    //建立管理上下文    _managedObjectContext = [[NSManagedObjectContext alloc] init];    //關聯上下文與儲存物件    [_managedObjectContext setPersistentStoreCoordinator:coordinator];    return _managedObjectContext;}

4 . 設定模型檔案,添加實體(Entity)

點擊“CoreData01.xcdatamodelId”檔案,然後添加一個實體“Book”,並增加幾個屬性。Core Data中的實體類似於資料庫的表定義,規定了不同欄位(屬性)的名字和類型。

5 . 建立模型對象的類, "Editor > Create NSManagedobject Subclass"。

6 . 選擇使用標量定義數實值型別的屬性(預設使用NSNumber類型定義int、float等類型的屬性)。

7 . Xcode自動建立於實體同名的類,並且繼承自“NSManagedObject”。

8 . 建立對象並儲存。

//擷取AppDelegate中建立的內容物件AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;NSManagedObjectContext *context = appDelegate.managedObjectContext;//擷取實體描述符NSEntityDescription *entity = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:context];//建立對象Book *book = [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:context];//設定對象的屬性book.title = @"紅樓夢";//儲存資料[context save:nil];

9 . 以後可以通過"NSFetchRequest"從檔案中擷取資料。

AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;NSManagedObjectContext *context = appDelegate.managedObjectContext;//建立請求對象,用於擷取實體Book所對應的全部資料,可以通過給NSFetchRequest設定predicate和sortDescriptors對結果進行篩選和排序。NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Book"];NSArray *result = [context executeFetchRequest:fetchRequest error:nil];NSLog(@"%@", result);
總結

Core Data的簡單使用還是很方便的,我們只需要關注資料內容和處理邏輯,而不需要考慮過多的儲存操作。但是它需要使用很多貌似沒有直接關聯的代碼,使得大家感覺非常複雜。

本文檔由長沙戴維營教育整理。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.