1

我想对 a 进行更改NSManagedObject,但不触发NSFetchedResultsController委托方法。但是,我确实希望将更改传播到上下文,这样如果我根据这些更改进行获取,结果就会显示出来。我已经尝试过在这个答案中提出的建议,但是问题是如果我根据这些更改进行获取,我不会得到任何结果,所以不仅委托方法没有触发(期望的结果),而且上下文是'没有意识到这些变化(一个不希望的结果)。

我的目标是严格防止NSFetchedResultsController在对某些属性进行更改时仅触发委托方法,但我仍然希望保留所有其他功能,例如 KVO 和 Core Data 在幕后所做的任何事情,以确保上下文了解变化。

4

2 回答 2

1

NSFetchedReresultsController 将在相关上下文中侦听来自相关实体的通知。您需要做的是在您的委托方法中引入一些逻辑,如果上下文对您想要忽略的对象进行了一些更改,您将丢弃对 UI 的任何更新(如果有)。如果您在完全持久跟踪模式下使用 NSFetchedResultsController 实例,则将调用委托方法。这是 NSFetchedResultsController 的主要用途。

于 2012-08-17T17:03:56.447 回答
0

我真的不知道您为什么要这样做,但是,您可以这样做的一种方法是设置某种全局标志,该标志将指示继续进行 UI 更新。

您将在保存上下文之前设置一个标志,在您获取的结果控制器委托方法中,您只需检查该标志,如果已设置,则取消设置并返回以停止 UI。

于 2012-08-17T17:14:51.093 回答