gpt4 book ai didi

iOS5 NSFetchedResultsController 没有得到删除更新

转载 作者:行者123 更新时间:2023-11-29 13:10:34 24 4
gpt4 key购买 nike

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

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

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

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

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

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

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

最佳答案

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

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

关于iOS5 NSFetchedResultsController 没有得到删除更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com