1

当我在一个实体更新瞬态属性(我想其他属性)用下面的代码NSFetchedResultsController不更新更新NSManagedObjects

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

NSFetchedResultsController删除从提取结果的对象。

我想我必须做[fetchedresultscontroller performFetch:&error]再次做一次抓取,但没有任何反应,对象不会回来抓取结果。

什么我失踪?如何在运行时更新对象,而不会从NSFetchResultController的提取中删除?

谢谢

+0

说出你的模型。你如何检索* passedObject *?谢谢。 – 2012-02-28 13:46:18

+0

有什么想法?我有sae问题。 'NSFetchedResultsController'调用DELETE而不是UPDATE。你找到答案了吗? – 2015-09-03 16:58:38

回答

1

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

如果您显示进行原始提取的代码,则可能有人可以准确地告诉您问题是什么。

1

BillKast,

瞬态属性很特殊,不参与提取请求。您可以将它们视为始终在磁盘上为零。

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

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

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

Andrew

1

谢谢你们俩的帮助!

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

非常感谢。

相关问题