迁移到iCloud后无法访问对象的持久存储

时间:2014-03-21 11:55:38

标签: ios objective-c core-data icloud

我的应用使用两个UITableViewController及其各自的NSFetchedResultController来显示其数据。它们保存在UITabBarController内。 用户可以在App设置包中启用iCloud。

当应用程序以iCloud禁用启动时,这两个表都会填充数据并且工作正常。

该应用程序立即向用户显示第一个控制器的数据。

如果用户进入应用程序设置并打开"使用iCloud开关",当应用程序进入前台时,系统会询问他是否真的想要将数据与iCloud合并。如果他回答是,那么我:

1)重置子和父上下文,我从协调器中删除现有的商店。

2)我在另一个上下文中重新加载商店,然后使用migratePersistentStore将其迁移到iCloud选项:toURL:options:withType:error

3)我删除旧的本地文件

4)我将新启用iCloud的持久存储添加到协调器。

到目前为止一切都很好但是在迁移之后如果我点击第二个选项卡,UITableViewController frc(在迁移之前工作正常)会尝试刷新数据并且我收到此错误:

无法从此nsmanagedobjectcontext协调员访问

对象的持久存储

当这个出现时,启用iCloud的持久存储会出现在协调器PersistentStores数组中!这是唯一正确的。

如果我关闭应用程序并重新启动它一切正常,新的启用iCloud的数据库将作为应用商店加载,并且显示对象没有问题。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

正如所建议的那样,问题是我在旧商店附近管理对象。我修复了在迁移完成后发布通知然后我设置为nil所有NSFetchedResultsController,我重新创建它们并且我要求他们执行他们的请求。现在一切都按预期工作了。