我想实现方法,当由于迁移或保存失败而导致存储被破坏时,将重新创建新的持久存储。我有以下代码:
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "test")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error {
do {
try container.persistentStoreCoordinator.destroyPersistentStore(at: NSPersistentContainer.defaultDirectoryURL(), ofType: NSSQLiteStoreType, options: nil)
// what to do here?
} catch let error {
print ("\(error)")
}
print("Unresolved error \(error)")
}
})
return container
}()
我实现了销毁持久性存储,当它被破坏时,但我找不到可用于文档的东西,哪种方法可以重新创建它。也许有人有这种类型的问题?
答案 0 :(得分:0)
我建议使用CoreStore来管理您的CoreData。如果发生错误,它会自动重新创建数据库。如果您使用以下代码开始初始化数据库,它还将检查您当前的状态并尽可能修复所有内容:
let dataStack: DataStack = {
let dataStack = DataStack(xcodeModelName: "ModelName")
do {
try dataStack.addStorageAndWait(SQLiteStore(fileURL: storagePathUrl, configuration: "Default", localStorageOptions: .
recreateStoreOnModelMismatch))
} catch let error {
print("Cannot set up database storage: \(error)")
}
return dataStack
}()