mea*_*ers 5 objective-c nsfetchedresultscontroller nsfetchrequest ios
NSPredicate我的 FRC 上有一个fetchRequest。在某个时刻,一个对象被添加到 CoreData,我创建一个新谓词,更新fetchRequest并执行获取:
self.fetchedAddressesController.fetchRequest.predicate = self.predicate;
BOOL success = [self.fetchedAddressesController performFetch:nil];
Run Code Online (Sandbox Code Playgroud)
然而,这不会调用 FRC 的委托方法,例如controllerWillChangeContent:. 而且我的表视图没有更新。
但是,当我添加以下行时:
[self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)
在上面显示的两个下方,我确实看到了预期的更新。这说明要显示的数据确实发生了变化。
我检查了新的谓词,没有问题。我还将 FRC 设置delegate为self,并且在其他情况下调用其方法。
已经有什么想法可能是错的吗?
您所描述的行为是预期的。根据Apple文档,如果你想修改NSFetchedResultsController上的获取请求,你必须删除缓存(如果你正在使用缓存),修改NSFetchRequest,然后调用performFetch:(这不会调用任何委托方法)。
如果你想知道谓词之间发生了什么变化,你需要存储旧的状态并进行比较。我过去为此使用过的一个库是Doppelganger。
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |