swift - SwiftUI 和 db 使用 Core Data 为空
问题描述
大家好,到目前为止,我已经使用对 sqlite3 的简单调用来进行 CRUD 操作。我使用 xcode 下载了我的应用程序的容器,我检查了使用 DB Browser for SQLite 创建的数据库,对我来说一切都很好。我在数据库中找到了我所期望的一切。今天我将 Core Data 集成到我现有的项目中。我创建了一个名为“Libro”的简单实体并插入了一些记录。我重新检查了由核心数据管理的数据库,但在其中找不到任何记录。即使我关闭它并重新打开它,记录在应用程序上也是可见的,但数据库是空的。这个问题的原因是什么?同样在核心数据中,我如何使用默认记录预先填充一些表?最后,使用 Core Data 修改数据库和更新应用程序的最佳实践是什么?
struct ExampleView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(entity: Libro.entity(), sortDescriptors: [], predicate: nil, animation: nil) var libri: FetchedResults<Libro>
var body: some View {
Button(action: {
let newLibro = Libro(context: managedObjectContext)
newLibro.titolo = "ciao"
newLibro.id = UUID()
PersistenceController.shared.save()
}, label: {
Text("new Libro")
})
List{
ForEach(libri, id:\.id){ libro in
Text("titolo: " + "\(libro.titolo ?? "Unk")" + " uiid: " + "\(libro.id?.uuidString ?? "UUID NOT NKONOW")")
}
}
}
class PersistenceController{
static let shared = PersistenceController()
let container: NSPersistentContainer
private init(){
container = NSPersistentContainer(name: "Example")
container.loadPersistentStores{(description, error) in
if let error = error {
fatalError("Fatal Error - Core Data Store failed \(error.localizedDescription)")
}
}
}
func save(completion: @escaping (Error?) -> () = { _ in}){
let context = container.viewContext
if context.hasChanges {
do{
try context.save()
print("salvato")
completion(nil)
}
catch{
completion(error)
}
}
}
func delete(_ object: NSManagedObject, completion: @escaping (Error?) -> () = { _ in} ){
let context = container.viewContext
context.delete(object)
save(completion: completion)
}
解决方案
推荐阅读
- delphi - 如何使用自定义平等比较器创建字典?
- node-opcua - 服务器在事件中向 Prosys 和 Matrikon 客户端抛出错误
- html - HTML5 调试视频嵌入
- jmeter - 在 JMeter 中发送多个 http 请求,然后暂停一段时间以再次触发执行
- python - 合并重复的 for 循环结果
- python - udp 数据包代理允许数据包通过,但不更改其源 IP 地址
- nginx - 打开网页会发出两个相同的请求,但第二个请求带有“Accept: image/webp,*/*”标头
- mysql - 使用替换更新列
- javascript - Google Chrome 扩展 - 加载单个 div 后停止加载网站
- android - 更改材质工具栏中溢出菜单图标的颜色