我想实现一种方法,当存储由于迁移或保存失败而损坏时,该方法将重新创建新的持久存储。我有以下代码:
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
}()
我实现了销毁持久存储,当它被破坏时,但我在文档中找不到可用的东西,哪种方法可以重新创建它。也许有人遇到此类问题?
最佳答案
我建议使用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
}()
关于ios - CoreData - 数据库损坏后重新创建持久存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48281869/