關於今天的主題,有些複雜,我還在研究如何自訂義的去使用它,這篇只會稍稍介紹 Xcode 所提供的範例大概是如何運行的。
Persist or cache data on a single device, or sync data to multiple devices with CloudKit.
CoreData 官方文件
首先大家可以開一個新的專案。
接著把 Use CoreData 勾起來。
打開後將其運行會發現以下版面,可以做出新增及編輯刪除的操作。
含有 CoreData 的專案,會預設幫你將相關的程式碼寫在 Persistence 中。
CoreData 的設定及資料如下圖所示:
可以自行新增 Entities/Attribute/Relationships...
這邊預設範例是只有 timestamp
的部分。
在 ContentView 程式碼上方有宣告->要求取得資料並讀取(查詢)
@FetchRequest()
//並取得Item.timestamp內容(此內容在 coredatamodel 中可以設定)
接著看新增跟刪除的函式:
private func addItem() {
withAnimation {
let newItem = Item(context: viewContext)
newItem.timestamp = Date()
do {
try viewContext.save()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
}
}
private func deleteItems(offsets: IndexSet) {
withAnimation {
offsets.map { items[$0] }.forEach(viewContext.delete)
do {
try viewContext.save()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
}
}
由 viewContext 參數來運行,並用 .save
存取到資料庫。
viewContext 是宣告在 Persistence 中的 nsManagedObjectContext,而它是用來讀取你在 CoreDataModel 中的設定。
用 .delete
刪除資料。
今天就到這邊啦~
大家一起來探索 SwiftUI ~感謝閱讀