1、簡介
Core Data是iOS5以後纔出現的一個框架,它提供了對象-關係映射(ORM)的功能,即可以將OC對象轉化成數據,保存在SQLite數據庫文件中,也可以將保存在數據庫中的數據還原成OC對象。在此數據操做期間,咱們不須要編寫任何SQL語句,這個有點相似於著名的Hibernate持久化框架,不過功能確定是沒有Hibernate強大的。
2、Core Data用法
對象介紹:
1, Managed Object Model
Managed Object Model 是描述應用程序的數據模型,這個模型包含實體(Entity),特性(Property),讀取請求(Fetch Request)等。(下文都使用英文術語。)
2,Managed Object Context
Managed Object Context 參與對數據對象進行各類操做的全過程,並監測數據對象的變化,以提供對 undo/redo 的支持及更新綁定到數據的 UI。
3,Persistent Store Coordinator
Persistent Store Coordinator 至關於數據文件管理器,處理底層的對數據文件的讀取與寫入。通常咱們無需與它打交道。
4,Managed Object
Managed Object 數據對象,與 Managed Object Context 相關聯。
5,Controller
圖中綠色的 Array Controller, Object Controller, Tree Controller 這些控制器,通常都是經過 control+drag 將 Managed Object Context 綁定到它們,這樣咱們就能夠在 nib 中可視化地操做數據。
具體用法:
1,應用程序先建立或讀取模型文件(後綴爲xcdatamodeld)生成 NSManagedObjectModel 對象。Document應用程序是通常是經過 NSDocument 或其子類 NSPersistentDocument)從模型文件(後綴爲 xcdatamodeld)讀取。
2,而後生成 NSManagedObjectContext 和 NSPersistentStoreCoordinator 對象,前者對用戶透明地調用後者對數據文件進行讀寫。
3,NSPersistentStoreCoordinator 負責從數據文件(xml, sqlite,二進制文件等)中讀取數據生成 Managed Object,或保存 Managed Object 寫入數據文件。
4,NSManagedObjectContext 參與對數據進行各類操做的整個過程,它持有 Managed Object。咱們經過它來監測 Managed Object。監測數據對象有兩個做用:支持 undo/redo 以及數據綁定。這個類是最常被用到的。
5,Array Controller, Object Controller, Tree Controller 這些控制器通常與 NSManagedObjectContext 關聯,所以咱們能夠經過它們在 nib 中可視化地操做數據對象。
3、Core Data線程安全
CoreData中的NSManagedObjectContext在多線程中不安全,若是想要多線程訪問CoreData的話,最好的方法是一個線程一個NSManagedObjectContext,每一個NSManagedObjectContext對象實例均可以使用同一個NSPersistentStoreCoordinator實例,這個實例能夠很安全的順序訪問永久存儲,這是由於NSManagedObjectContext會在便用NSPersistentStoreCoordinator前上鎖。
Create a separate managed object context for each thread and share a single persistent store coordinator.This is the typically-recommended approach.