我一直在我的项目中尝试一些更改,并一直在添加和删除实体的Core Data示例。
最终,由于我的代码发生了变化,已经存储在持久存储中的数据变得损坏,无法加载。每当Core Data试图加载我的数据时,应用程序都会崩溃。
我知道问题出在哪里--我需要从持久存储中删除一些核心数据实体的示例,但我无法在模拟器中通过滑动删除来完成,因为当核心数据试图加载时,应用程序会崩溃。
如何通过代码删除持久存储中的所有内容,而不加载存储?
我知道有一个函数可以销毁持久*存储,但老实说,我不知道应该如何以及在哪里使用它。
我想我应该更改DataController中的代码。
下面是我如何加载NSPersistentContainer(数据控制器类)
import Foundation
import CoreData
class DataController: ObservableObject {
let container = NSPersistentContainer(name: "iLegal")
init () {
container.loadPersistentStores { description, error in
if let error = error {
print("Core Data failed to load: \(error.localizedDescription)")
return
}
}
}
}
然后创建NSPersistentContainer的@StateObject并将其发送到环境
import SwiftUI
@main
struct iLegalApp: App {
@StateObject private var dataController = DataController()
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, dataController.container.viewContext)
}
}
}
救命啊!
1条答案
按热度按时间blmhpbnm1#
@lorem-ipsum谢谢!我想明白了!
在DataController类中,我基本上将init()函数重写为:
我运行了项目,persistentStore是空的。
然后我又说: