Core Data 是 iOS 的資料庫,可讓使用者在本地端儲存資料
可以在一開始建立專案時就把Core Data 添加至專案中,也可以在已存在的專案中新增Core Data
建立Core Data 需要設置管理和持久化物件的類別,這些類別統稱為核心數據堆棧/堆疊 Core Data Stack
Core Data 提供了以下類別來幫忙 Support 儲存Model 層的資料類別:
NSManagedObjectModel
的實例代表你的應用程序的模型文件,描述你的應用程序的類型、屬性和關係,用來讀取與呈現Core Data Model 內的物件結構,為建立CoreData 後出現的xcdatamodeld
檔案,需在Core Data Model 內建立實體(Entity)、屬性(Attributes)與資料關聯性(Relationship)等設定
NSManagedObjectContext
的實例用來跟踪對應用程序類型實例的更改,對Model(資料)做新增、刪除、修改、讀取等動作,就像一個暫存記憶體存取著Model 資料,當接收到動作指令後才會將資料交付至Coordinator 來存取至Persistent Store 永久性資料庫
NSPersistentStoreCoordinator
的實例用來保存並從資料庫中獲取應用程序存數據的實例,是一個中介的角色,處於Model(資料)與Persistent Store(資料庫)之間,負責處理資料的讀取與寫入。Persistent Store 是實際將資料儲存的地方,是iOS 內建的SQLite 資料庫
NSPersistentContainer
會用來簡化NSManagedObjectModel
、NSPersistentStoreCoordinator
與NSManagedObjectContext
的創建與管理
概述:
在創建Core Data Stack 時,我們需要一個ManagedObjectModel
來實例化PersistentStoreCoordinator
,來讓PersistentStoreCoordinator
知道應用程序的類型、屬性和關係
設置了Coordinator 和Model 之後,Core Data Stack 的主要工作就是NSManagedObjectContext
,其中 Context 保留了對Coordinator 的引用
設置完Core Data Stack 後,我們就可以使用我們的Core Data 來儲存我們的資料,主要通過Context 與Coordinator 進行交互,其中Context 是我們最常使用的類別,用於創建,讀取,更新和刪除記錄,在Context 中做了這些動作後,Context 會將它們推送到Coordinator,Coordinator 將更改發送到相應的資料庫