请指引我走正确的路。
我实现了这段代码来获取我的对象:
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSPredicate *predicate = nil;
if (self.selectedCategory)
{
predicate = [NSPredicate predicateWithFormat:@"ANY category_ids.category_id == %@", self.selectedCategory];
}
_fetchedResultsController = [EyeArtist fetchAllGroupedBy:nil withPredicate:predicate sortedBy:@"artist_id" ascending:NO delegate:self];
return _fetchedResultsController;
}
因此,当应用程序运行时,第一次 fetch 可以在没有 predicate 的情况下工作,所以第二次我需要使用 predicate 进行新的 fetch。
我点击按钮并设置字符串 self.selectedCategory,但我不知道如何从 - (NSFetchedResultsController *)fetchedResultsController; 重新获取数据;
所以我想它必须像对 fetchedResultsController 实例执行新请求一样。
最佳答案
更改搜索条件后,您必须将实例变量self.fetchedResultsController
设置为nil
,
这样下次调用“lazy getter”函数就会创建一个新的 FRC
更改谓词。像这样:
self.fetchedResultsController = nil;
[self.fetchedResultsController performFetch:&error];
[self.tableView reloadData];
关于core-data - NSFetchedResultsController 刷新以获取新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906051/