【发布时间】:2019-01-18 22:00:50
【问题描述】:
这是代码:
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
// The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
let filemgr = FileManager.default
let documentDirectoryURL = try! FileManager.default.url(for: .documentDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true)
let databaseURL = documentDirectoryURL.appendingPathComponent(“def.sqlite")
var error1 : NSError?
let fileExists = (databaseURL as NSURL).checkResourceIsReachableAndReturnError(&error1)
if(fileExists){
self.copyFile()
}
var myOptions = Dictionary<String, Any>()
myOptions[NSMigratePersistentStoresAutomaticallyOption] = true
myOptions[NSInferMappingModelAutomaticallyOption] = true
var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let ext = ".sqlite"
let url = self.applicationDocumentsDirectory.appendingPathComponent((Utils.getPreferenceValue(ForKey: Constants.LOGIN_USER_NAME))+ext)//".sqlite")
var error: NSError? = nil
var failureReason = "There was an error creating or loading the application's saved data."
do {
try coordinator!.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: myOptions)
} catch var error1 as NSError {
error = error1
coordinator = nil
// Report any error we got.
var dict = [String: AnyObject]()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?
dict[NSUnderlyingErrorKey] = error
error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
// Replace this with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog("Unresolved error \(error), \(error!.userInfo)")
abort()
} catch {
fatalError()
}
return coordinator
}
这是我遇到的错误。
返回错误 Error Domain=NSCocoaErrorDomain Code=134110 "一个错误 在持久存储迁移期间发生。” UserInfo={sourceURL=file:///var/mobile/Containers/Data/Application/2963C60A-11D3-4A6F-9496-623F5EFCFCB1/Documents/me.gundmi@abc.in.sqlite, 原因=无法将源存储复制到目标存储路径, destinationURL=file:///var/mobile/Containers/Data/Application/2963C60A-11D3-4A6F-9496-623F5EFCFCB1/Documents/.me.gundmi@abc.in.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x1c4a40480 {错误域=NSCocoaErrorDomain 代码=516 "文件 “.me.gundmi@abc.in.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3” 无法保存在“文档”文件夹中,因为带有 同名已经存在。” UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/2963C60A-11D3-4A6F-9496-623F5EFCFCB1/
【问题讨论】:
-
如果它们非常大,那么您可能需要考虑控制迁移并将其置于后台线程或将其分解为多个部分,以便应用程序可以按时启动
-
感谢您的帮助,但在此版本之前它运行良好。无论如何,我会听取您的建议,并尝试在后台执行此操作。但目前,我需要快速修复。
标签: ios iphone core-data-migration crash onupdate