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的主要内容,如果未能解决你的问题,请参考以下文章