core-data - NSFetchedResultsController 刷新以获取新数据

标签 core-data nsfetchedresultscontroller

请指引我走正确的路。

我实现了这段代码来获取我的对象:

- (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/

相关文章:

ios - 从 Core Data 中的 AppDelegate 执行回滚功能时需要访问相同的 ManagedObjectContext 实例

ios - 调用existingObjectWithID时如何解析dynamicCastClassUnconditional断点

ios - NSSQLite 迁移到 Seam3 存储类型失败并出现 EXC_BAD_ACCESS

ios - 从核心数据管理 TableView 中删除对象时出错

ios - 访问某个对象在 : Legal to access the cell via superview? 中的 TableView 单元格

objective-c - 对于跨时间范围的获取等,SQLite 会比 Core Data 更受青睐吗?

ios - NSBatchUpdateRequest 抛出 NSInternalInconsistencyException

ios - 使用核心数据在 NSDate 属性中仅按年份过滤 TableView Controller

iphone - 为 NSManagedObject 的属性设置值后保存时 CoreData 崩溃

ios - NSFetchedResultsController 不知道数据已被 NSBatchUpdateRequest 更改