iphone核心数据 - 过滤NSFetchedResultsController?

时间:2010-10-21 23:10:16

标签: iphone core-data nsfetchedresultscontroller nspredicate

我得到了其他程序员编写的框架来访问核心数据。 在这种情况下,我收到一个预先加载的NSFetchedResultController,我需要对其进行过滤,以显示其部分数据。

以下是我的尝试:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category==%@", @"current"];
[NSFetchedResultsController deleteCacheWithName:@"Root"];
[myResultController.fetchRequest setPredicate:predicate];
myResultController.fetchedObjects = [myResultController.fetchedObjects filteredArrayUsingPredicate:predicate];

我得到一个错误,说无法设置对象,缺少setter方法,或者对象是只读的。

那么过滤已经加载的NSFetchResultController的最佳方法是什么,而不必将过滤后的数据存储到另一个数组中?

1 个答案:

答案 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];