【问题标题】:iOS5 NSFetchedResultsController not getting delete updatesiOS5 NSFetchedResultsController 没有得到删除更新
【发布时间】:2013-07-05 17:55:40
【问题描述】:

我有一个 NSFetchedResultsController 绑定到我的主要托管对象上下文。它负责在我的主视图中保存表格视图的数据。

我有一个在后台线程上运行的 NSOperation,它刷新/删除获取的结果控制器正在跟踪的托管对象。我在 nsoperation 中创建了一个子上下文(私有并发类型 / 父级 = 主托管对象上下文)并插入/删除对象。完成后,它会保存其上下文以及父上下文。

有趣且令人沮丧的是,这在 iOS 6 中运行良好。当我插入或删除对象时,我获取的结果控制器会收到更改通知,并且一切都按预期工作。但是,在 iOS 5 上,除了删除之外,一切正常。获取的结果控制器不会收到删除通知。但是...如果我手动刷新获取的结果控制器(使其为零并重新获取相同的谓词),那么它将显示预期的结果。

此外,当我在主上下文中注册更改/保存通知时,我可以看到用户信息字典包含我已删除的对象...即使在 iOS 5 中也是如此!

我认为可能存在的一个问题,但我认为不成立,因为我已经删除了这些因素,即该对象与另一个对象存在多对一关系。我要删除/插入的对象是“员工”,它与“部门”有关系。员工设置为无效,部门设置为级联。

正如我所说,这在 iOS6 中可以正常工作,但在 iOS5 中则不行。

任何提示都会非常有帮助。

【问题讨论】:

    标签: ios ios5 core-data nsfetchedresultscontroller


    【解决方案1】:

    此错误是由于保存到持久存储。这个子上下文会保存自己,然后在它的父级(主要托管对象上下文)上调用 perform 块。当主托管对象上下文保存时,它会触发后台上下文写入持久存储。当我删除后台上下文保存时,获取的结果控制器按预期更新。

    我发现可能导致此问题的一些有趣的事情是,每次我尝试保存到存储时托管对象都会泄漏。还不完全确定如何解决这个问题,但很高兴知道它的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多