Core Data的API
Core Data應用中的核心API有如下幾個:
(1) 託管對象模型。
(2) 持久化存儲協調器。
(3) 託管對象上下文。
(4) 實體描述。
(5) 抓取請求。
持久化操作
掌握上面的API之後,持久化操作如下:
(1) 創建NSManagedObjectModel對象來加載管理應用的託管對象模型。
(2) 以NSManagedObjectModel對象爲基礎,根據實際需要創建NSPersistentStoreCoordinator對象,該對象確定Core Data底層數據的存儲形式。
(3) 以NSManagedObjectModel對象爲基礎,創建NSManagedObjectContext,該對象時Core Data進行持久化訪問的核心對象。
(4) 對於普通的增刪改查操作,需要分別先新建實體、刪除實體、修改實體,然後調用NSManagedObjectContext對象的save:方法將這些修改保存到底層設備。
(5) 如果要執行查詢,則需要先創建愛你NSFetchRequest對象,在調用NSManagedObjectContext的executeFetchRequest:error:方法執行查詢,該方法返回所有匹配條件的實體組成的NSArray。
初始化Core Data項目
iOS允許在創建iOS項目時勾選“Use Core Data”複選框,通過這種方式創建iOS項目已經完成了所有CoreData必須資源的初始化,但此處並不打算使用這種方式來初始化,我們將手動初始化來真正理解Core Data。
新建一個EmptyApplication項目,新建項目將只包含一個應用程序委託類。接下來逐步把該項目改造成Core Data項目:
(1) 爲該項目添加CoreData.framework框架。
(2) 爲該項目添加一個實體模型文件。
(3) 初始化Core Data應用必須的核心API對象。
設計實體模型
對象模型可添加3種對象:
(1) 實體:這是實體模型最核心的對象,每個實體都必須是NSManagedObject類或其子類。
(2) 抓取請求:NSFetchRequest對象,Xcode允許在圖形界面上設計抓取請求對象。
(3) 配置:一般無須自行添加配置對象。當開發者添加實體後,系統會自動添加默認的配置。
每個實體也可以添加如下3種屬性:
(1) 屬性:該屬性相當於實體對象的實例變量,用於記錄該實體的狀態。
(2) 關聯關係:該屬性定義實體之間的1:1、1:N、N:N關聯關係。
(3) 抓取屬性:這是關聯關係的可選方法,抓取屬性允許在獲取管理實體時執行某個過濾條件。
使用Core Data實現數據的增、刪、改、查
獲取託管對象上下文之後,接下來即可通過該對象執行增、刪、改、查操作。
(1) 添加實體
1) 調用NSEntityDescription的insertNewObjectForEntityForName:inManag edObjectContext靜態方法添加新實體。
2) 爲新實體設置屬性。
3) 調用NSManagedObjectContext對象的save:方法執行保存。
(2) 刪除實體
1) 獲取需要刪除的實體。
2) 調用NSManagedObjectContest對象的deleteObject:方法刪除實體。
3) 調用NSManagedObjectContext對象的save:方法執行保存。
(3) 修改實體
1) 獲取要修改的實體。
2) 修改實體的屬性。
3) 調用NSManagedObjectContext對象的save:方法執行保存。
(4) 查詢實體
1) 創建NSFetchRequest對象。
2) 通過NSEntityDescription對象設置NSFetchRequest對象將要抓取的實體。
3) 如要需要對抓取結果進行篩選,則需要通過NSPredicate對象設置篩選條件。如果需要對結果進行排序,還需要爲NSFetchRequest添加多個NSSortDescriptor對象。
4) 調用NSManagedObjcetContext對象的excuteFetchRequest:error:方法執行查詢,該查詢方法將會返回所有符合條件的實體組成的NSArray集合。
管理實體的關聯關係
Core Data除了可用於管理單獨的實體之外,還可用於管理實體與實體之間的關聯關係,這些關聯關係同樣可通過.xcdatamodeld文件進行設計,接下來CoreData應用完全可以利用實體之間的關聯關係執行刪除、查找等操作。