Swift Core Data 是一個強大的框架,可以讓開發者輕鬆地將資料儲存在iOS和macOS上。它可以讓你建立複雜的資料模型,並且提供了一個容易使用的API來存取資料。
在開始使用Swift Core Data之前,你需要先建立一個Data Model,它是一個描述你的資料模型的檔案,它可以包含多個Entity,每個Entity可以有多個Attribute,每個Attribute可以有不同的屬性,例如:String、Integer、Boolean等等。
建立Data Model
要建立Data Model,你可以在Xcode中新增一個新的檔案,然後選擇Core Data,然後選擇Data Model,然後給它一個名字,例如MyDataModel,然後按下Create按鈕。
建立Entity
接下來,你可以在Data Model中建立一個Entity,你可以按下右上角的+按鈕,然後選擇New Entity,然後給它一個名字,例如User,然後按下Create按鈕。
建立Attribute
接下來,你可以在Entity中建立Attribute,你可以按下右上角的+按鈕,然後選擇New Attribute,然後給它一個名字,例如name,然後選擇它的屬性,例如String,然後按下Create按鈕。
建立Managed Object Model
接下來,你可以建立一個Managed Object Model,它是一個對應你的Data Model的物件,你可以在你的AppDelegate中建立它,例如:
let managedObjectModel: NSManagedObjectModel = {
let modelURL = Bundle.main.url(forResource: "MyDataModel", withExtension: "momd")!
return NSManagedObjectModel(contentsOf: modelURL)!
}()
建立Persistent Store Coordinator
接下來,你可以建立一個Persistent Store Coordinator,它是一個對應你的Managed Object Model的物件,你可以在你的AppDelegate中建立它,例如:
let persistentStoreCoordinator: NSPersistentStoreCoordinator = {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
let url = applicationDocumentsDirectory.appendingPathComponent("MyDataModel.sqlite")
let failureReason = "There was an error creating or loading the application's saved data."
do {
try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: nil)
} catch {
var dict = [String: AnyObject]()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?
dict[NSUnderlyingErrorKey] = error as NSError
let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
abort()
}
return coordinator
}()
建立Managed Object Context
最後,你可以建立一個Managed Object Context,它是一個對應你的Persistent Store Coordinator的物件,你可以在你的AppDelegate中建立它,例如:
let managedObjectContext: NSManagedObjectContext = {
let coordinator = persistentStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
現在你已經建立了一個完整的Swift Core Data架構,你可以開始使用它來儲存和讀取資料了!
推薦閱讀文章
Getting Started with Core Data Tutorial
Core Data and Concurrency
Core Data on iOS Tutorial: Getting Started
Core Data Tutorial: Getting Started (Part 2)
Core Data Tutorial: Getting Started (Part 3)</a