我有一个现有的数据模型,只有一个持久存储,一切都很好。
现在,按照WWDC 2012视频“使用带有核心数据的iCloud”(#227),我在我的模型中定义了两个配置,“云”和“本地”,同时保持原始的“默认”。我在“云”和“本地”之间拆分了我的实体。在我的代码中,我只添加了两个相应的持久存储:
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES,
NSInferMappingModelAutomaticallyOption: @YES};
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:@"Cloud"
URL:[self cloudPersistentStoreURL]
options:options
error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:@"Local"
URL:[self localPersistentStoreURL]
options:options
error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
这些都添加得很好。稍后,当运行应用程序并尝试保存一些初始试用数据时,会抛出以下异常:
NSUnderlyingException =无法解析如何将对象分配给商店; 某些物品可能已分配给商店;使用[[managedObject objectID] persistentStore]来找出现在的情况;使用 [managedObjectContext assignObject:toStore:]来解决问题
我用谷歌搜索了没有点击的部分,Apple的故障排除核心数据文档似乎没有讨论这个。我不知道是什么导致这个或在哪里看。有什么想法吗?
答案 0 :(得分:2)
确保您没有从一个商店到另一个商店的关系。相关实体必须位于相同的配置中。
例如,您已将实体Book
配置为存储在Cloud
和Author
中以存储到Local
中。两者都是相关的。
现在,当您将Author
分配给Book
并保存时,CoreData无法处理该关系,并会引发您看到的错误。