核心資料堆疊

這是核心資料堆疊的實現,如果在建立專案時使用 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

從永續性儲存中獲取物件時,可以將臨時副本放在便箋簿上,它們形成物件圖(或物件圖的集合)。然後,你可以修改這些物件,除非你實際儲存這些更改,但永續性儲存保持不變。

必須使用託管物件上下文註冊所有託管物件。你可以使用上下文將物件新增到物件圖中,並從物件圖中刪除物件。上下文跟蹤你所做的更改,包括單個物件的屬性以及物件之間的關係。通過跟蹤更改,上下文可以為你提供撤消和重做支援。它還確保瞭如果更改物件之間的關係,則可以保持物件圖的完整性。

儲存更改時,上下文可確保物件處於有效狀態。更改將寫入永續性儲存(或多個儲存),為你建立的物件新增新記錄,並刪除已刪除物件的記錄。

來源: Apple 核心資料程式設計:初始化核心資料堆疊