【问题标题】:object's persistent store is not reachable after migrating to iCloud迁移到 iCloud 后无法访问对象的持久存储
【发布时间】:2014-04-28 18:44:32
【问题描述】:

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

当应用程序在禁用 iCloud 的情况下启动时,两个表都填充了数据并且可以完美运行。

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

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

1) 重置子上下文和父上下文,然后从协调器中删除现有存储。

2) 我在另一个上下文中重新加载存储,并使用 iCloud 选项使用 migratePersistentStore:toURL:options:withType:error 迁移它

3) 我删除了旧的本地文件

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

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

无法从此 nsmanagedobjectcontext 的协调器访问对象的持久存储

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

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

我该如何解决这个问题?

【问题讨论】:

  • 听起来您至少在​​内存中保留了旧存储中的一个托管对象,然后在该存储消失后尝试使用它。您是否正在清理所有内存管理对象?

标签: ios objective-c core-data icloud


【解决方案1】:

正如建议的那样,问题是我保留了旧商店的托管对象。我修复了在迁移完成时发布通知,然后我将所有 NSFetchedResultsController 设置为零,我重新创建它们并要求他们执行他们的请求。现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2021-09-14
    • 2014-05-11
    • 1970-01-01
    • 2017-07-02
    • 2017-09-07
    • 1970-01-01
    相关资源
    最近更新 更多