我正在使用NSFetchedResultsController
,它使用谓词来获取一些托管对象。我始终认为NSFetchedResultsController
在对象更改时会更新,即如果我有谓词"box == 3"
而box
更改为2
,则不会提取它。何时更新NSFetchedResultsController?
但是,即使我更改了对象并保存了托管对象上下文,我仍然可以通过我的FRC访问该对象。即使删除缓存,这仍然是可能的。
这是正确的行为吗?
我正在使用NSFetchedResultsController
,它使用谓词来获取一些托管对象。我始终认为NSFetchedResultsController
在对象更改时会更新,即如果我有谓词"box == 3"
而box
更改为2
,则不会提取它。何时更新NSFetchedResultsController?
但是,即使我更改了对象并保存了托管对象上下文,我仍然可以通过我的FRC访问该对象。即使删除缓存,这仍然是可能的。
这是正确的行为吗?
经过进一步的测试,我认为它是保存到假设FRC
没有更新,没有我做的事情。我只拨打-performFetch:
一次,但我没有实施该委托。根据该文档的FRC
似乎到只有注册变更通知:
如果为已取得的成果控制器的委托, 寄存器从管理对象 方面收到变更通知控制器。
您是否设置了NSFetchedResultsController的委托?当托管对象上下文发生更改时,NSFetchedResultsController的委托是通知更改的那个委托。请参阅以下内容:
一个简单的方法例如更新您的表格只是将FRC设置为nil
并重新加载。这往往会照顾所有的更新问题,而且效率也很高。 FRC将懒洋洋地重新创建自己并填充桌面。
self.fetchedResultsController = nil;
[self.tableView reloadData];
我在本例中实际上并未将它用于表格视图。 – fabian789
为什么选择投票? – fabian789