什麼是 CoreData
CoreData 是一個可以讓開發者在 App 內使用關聯式資料庫的框架
CoreData 結構
- ManagedObject
- 單筆資料表紀錄 ORM 轉換後的物件型態,可以用 Object[欄位名稱] 來存取資料內容
- ManagedObjectContext
- CoreData資料的記憶體暫存區,存放資料庫中撈出來的資料,開發者異動的資料也會由此物件做第一層的管理,如果想要把記憶體中的資料寫入資料庫中,也是由此物件去和 PersistentObjectStore 做溝通
- PersistentStoreCoordinator
- 此物件會將資料庫的紀錄撈出來和當前選擇的 data model 做 ORM 的動作,如果發現 data model id 有異動,則開發者要告訴此物件以何種方式做 migration
- ManagedObjectModel
- 資料庫記錄進行 ORM 的 data model,此物件由 PersistentStoreCoordinator 讀取並將資料庫記錄轉為 ManagedObject
- PersistentObjectStore
- 實際儲存資料到檔案的物件,儲存格式可以是 SQLite, XML 或 二進位檔
說白話一點,開發者會決定目前的 data model 長什麼樣子,然後 PersistentStoreCoordinator 會去讀取 data model 和 資料庫並產生一堆依照 data model 規劃的 ManagedObject 並存放在 MangedObjectContext 中,所以如果以開發者的角度來看,可以分成幾種狀況 :
- 新增資料
- 要先找到 ManagedObjectContext,然後告訴他要新增哪個資料表的資料,ManagedObjectContext 會回傳該資料表 ORM 後的 ManagedObject,對該 ManagedObject 做屬性(欄位)的設定後,再決定是否要儲存到資料庫中
- 修改資料
- 和新增資料相同,使用 ManagedObjectContext 撈出資料後直接對該 ManagedObject 做屬性的設定,再決定是否寫入到資料庫中
- 刪除資料
- 先找到 ManagedObjectContext,篩選出符合刪除條件的 ManagedObject,使用 ManagedObjectContext 刪除,再決定是否寫入到資料庫中
沒有留言:
張貼留言