【发布时间】:2017-04-14 20:33:36
【问题描述】:
这是我在 Business 实体的源模型中拥有的:
这就是我在 Business 实体的目标模型中所拥有的:
如你所见,我将关系从多变为一,从 users 变为 user。
但现在我有以下错误:
URL:file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite 选项:{
NSInferMappingModelAutomaticallyOption = 1;
NSMigratePersistentStoresAutomaticallyOption = 1;
} ... 返回错误 错误域 = NSCocoaErrorDomain 代码 = 134110 “持久存储迁移期间发生错误。” UserInfo={sourceURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite,原因=无法就地迁移存储:验证错误缺少属性值关于强制目标关系,destinationURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x170458990 {Error Domain =134110 "持久存储迁移期间发生错误。" UserInfo={entity=Business,attribute=user,reason=Validation error missing attribute values on强制目的地关系}}}与userInfo字典{
NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=134110 \"在持久存储迁移期间发生错误。\" UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on强制目标关系}";
destinationURL = "file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3";
原因=“无法就地迁移存储:验证错误缺少强制目标关系上的属性值”;
sourceURL = "file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite";
}
致命错误:“试试!”表达式意外引发错误:错误域 = NSCocoaErrorDomain 代码 = 134110“持久存储迁移期间发生错误。” UserInfo={sourceURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite,原因=无法就地迁移存储:验证错误缺少属性值关于强制目标关系,destinationURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x170458990 {Error Domain =134110 "持久存储迁移期间发生错误。" UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on强制目的地关系}}}:文件/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.58.6/src/ swift/stdlib/public/core/ErrorType.swift,第 178 行
2016-11-30 14:25:43.070185 POSowner [3474:513840] 致命错误:“尝试!”表达式意外引发错误:错误域 = NSCocoaErrorDomain 代码 = 134110“持久存储迁移期间发生错误。” UserInfo={sourceURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/POSowner.sqlite,原因=无法就地迁移存储:验证错误缺少属性值关于强制目标关系,destinationURL=file:///private/var/mobile/Containers/Shared/AppGroup/00C2A6C6-8149-4CF7-95E1-6ABD8A2B3B57/.POSowner.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x170458990 {Error Domain =134110 "持久存储迁移期间发生错误。" UserInfo={entity=Business, attribute=user, reason=Validation error missing attribute values on强制目的地关系}}}:文件/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.58.6/src/ swift/stdlib/public/core/ErrorType.swift,第 178 行
我不知道如何解决这个问题。有什么想法吗?
这就是我设置核心数据堆栈的方式:
静态函数 mr_setupCoreDataStack() { 守卫 NSPersistentStoreCoordinator.mr_default() == nil else { 返回 } 让 managedObjectModel = NSManagedObjectModel.mr_default() 让 persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel!) var storePath = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: SharedGroupName) storePath = storePath!.appendingPathComponent("POSowner.sqlite") 让选项 = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true] 尝试! persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: storePath, options: options) NSPersistentStoreCoordinator.mr_setDefaultStoreCoordinator(persistentStoreCoordinator) NSManagedObjectContext.mr_initializeDefaultContext(with: persistentStoreCoordinator) }【问题讨论】:
标签: ios swift core-data-migration