我得到了其他程序员编写的框架来访问核心数据。 在这种情况下,我收到一个预先加载的NSFetchedResultController,我需要对其进行过滤,以显示其部分数据。
以下是我的尝试:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category==%@", @"current"];
[NSFetchedResultsController deleteCacheWithName:@"Root"];
[myResultController.fetchRequest setPredicate:predicate];
myResultController.fetchedObjects = [myResultController.fetchedObjects filteredArrayUsingPredicate:predicate];
我得到一个错误,说无法设置对象,缺少setter方法,或者对象是只读的。
那么过滤已经加载的NSFetchResultController的最佳方法是什么,而不必将过滤后的数据存储到另一个数组中?
答案 0 :(得分:5)
fetchedObjects
只读。你无法手动设置它。
您需要做的是使用myResultController
执行新的抓取。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category==%@", @"current"];
[NSFetchedResultsController deleteCacheWithName:@"Root"];
[myResultController.fetchRequest setPredicate:predicate];
//myResultController.fetchedObjects = [myResultController.fetchedObjects filteredArrayUsingPredicate:predicate];
[myResultController performFetch:nil];