NSFetchedResultsController 不更新更新 NSManagedObjects

Posted

技术标签:

【中文标题】NSFetchedResultsController 不更新更新 NSManagedObjects【英文标题】:NSFetchedResultsController doesn't update updating NSManagedObjects 【发布时间】:2012-02-28 12:31:55 【问题描述】:

当我使用以下代码更新实体中的瞬态属性(我猜是其他属性)时

[passedObject setValue:distanceNumber forKey:@"distance"];

NSFetchedResultsController 从获取结果中删除对象。

我想我必须通过[fetchedresultscontroller performFetch:&error] 再次进行提取,但没有任何反应,对象没有回来提取结果。

我错过了什么?如何在运行时更新对象而不从NSFetchResultController 的提取中删除?

谢谢

【问题讨论】:

谈谈你的模型。你如何检索passedObject?谢谢。 有什么想法吗?我有sae问题。 NSFetchedResultsController 调用 DELETE 而不是 UPDATE。你找到答案了吗? 【参考方案1】:

获取的标准是什么?你使用谓词吗?最有可能的是,您对实体所做的更改使其与获取谓词不匹配。当您进行更改然后保存时,这将导致托管对象上下文通知当前获取的结果控制器上下文已更改。然后,获取的结果控制器检查所有更改并采取适当的措施。它将删除不再符合原始获取条件的对象。

如果您显示用于进行原始提取的代码,那么有人可能会准确地告诉您问题所在。

【讨论】:

【参考方案2】:

比尔卡斯特,

瞬态属性是特殊的,不参与获取请求。您可以认为它们在磁盘上始终为零。

我会做一个更简单的实验,只使用获取请求而不是获取结果控制器。

另外,分叉您的应用版本并将属性的类型更改为永久。我怀疑你会看到不同的行为。

由于您没有列出任何代码,恐怕我没有其他建议。瞬态属性可能是您的问题。

安德鲁

【讨论】:

【参考方案3】:

感谢两位的帮助!

我在想,对于瞬态属性,您不需要保存上下文。 错误的。 这就是问题所在,我只需要保存上下文。

再次感谢。

【讨论】:

以上是关于NSFetchedResultsController 不更新更新 NSManagedObjects的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?