Основные данные iphone - фильтрация NSFetchedResultController? - PullRequest
0 голосов
/ 22 октября 2010

Мне дали основу, написанную другими программистами для доступа к основным данным. В этой ситуации я получаю предварительно загруженный NSFetchedResultController, который мне нужно отфильтровать, чтобы отобразить часть его данных.

Вот что я попробовал:

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

И я получаю сообщение об ошибке, в котором говорится, что объект не может быть установлен, либо отсутствует метод установки, либо объект доступен только для чтения.

Итак, каков наилучший способ фильтрации NSFetchResultController, который уже загружен, без необходимости сохранять отфильтрованные данные в другом массиве?

1 Ответ

5 голосов
/ 22 октября 2010

fetchedObjects только для чтения. Вы не можете установить его вручную.

Что вам нужно сделать, это выполнить новый выбор с вашим myResultController.

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