Core Data,iCloud和两个持久性存储失败

时间:2013-01-26 09:27:44

标签: ios core-data icloud persistent-storage

我有一个现有的数据模型,只有一个持久存储,一切都很好。

现在,按照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的故障排除核心数据文档似乎没有讨论这个。我不知道是什么导致这个或在哪里看。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

确保您没有从一个商店到另一个商店的关系。相关实体必须位于相同的配置中。

例如,您已将实体Book配置为存储在CloudAuthor中以存储到Local中。两者都是相关的。 现在,当您将Author分配给Book并保存时,CoreData无法处理该关系,并会引发您看到的错误。