核心資料堆疊
這是核心資料堆疊的實現,如果在建立專案時使用 Core Data 建立專案,則最初將其放置在 AppDelegate
檔案中。這些函式也可以在 CoreDataStack.swift
的單獨類中實現。其中一個主要功能是獲取 NSManagedObjectContext。
Objective-C
- (NSManagedObjectContext *)managedObjectContext {...}
Swift 2
lazy var managedObjectContext: NSManagedObjectContext = {...}
Swift 3
lazy var persistentContainer: NSPersistentContainer = {...)
let managedObjectContext = persistentContainer.viewContext
核心資料堆疊,用於在應用程式中的物件與外部資料儲存之間進行通訊。Core Data 堆疊處理與外部資料儲存的所有互動,以便你的應用程式可以專注於其業務邏輯。堆疊由三個主要物件組成:託管物件上下文(NSManagedObjectContext
),永續性儲存協調器(NSPersistentStoreCoordinator
)和託管物件模型(NSManagedObjectModel
)。
NSManagedObjectModel
NSManagedObjectModel
例項描述了 Core Data 堆疊將要訪問的資料。NSManagedObjectModel
(通常稱為 mom
)作為建立堆疊的第一步載入到記憶體中。NSManagedObjectModel
的一個例子是 DataModel.momd。NSManagedObjectModel
定義了資料的結構
NSPersistentStoreCoordinator
NSPersistentStoreCoordinator
通過持久儲存中的資料實現物件,並將這些物件傳遞給請求的 NSManagedObjectContext
。它在模型中建立實體的新例項,並從持久儲存中檢索現有例項(NSPersistentStore
)。NSPersistentStoreCoordinator
還驗證資料是否處於與 NSManagedObjectModel
中的定義匹配的一致狀態。
NSManagedObjectContext
從永續性儲存中獲取物件時,可以將臨時副本放在便箋簿上,它們形成物件圖(或物件圖的集合)。然後,你可以修改這些物件,除非你實際儲存這些更改,但永續性儲存保持不變。
必須使用託管物件上下文註冊所有託管物件。你可以使用上下文將物件新增到物件圖中,並從物件圖中刪除物件。上下文跟蹤你所做的更改,包括單個物件的屬性以及物件之間的關係。通過跟蹤更改,上下文可以為你提供撤消和重做支援。它還確保瞭如果更改物件之間的關係,則可以保持物件圖的完整性。
儲存更改時,上下文可確保物件處於有效狀態。更改將寫入永續性儲存(或多個儲存),為你建立的物件新增新記錄,並刪除已刪除物件的記錄。