какао iphone fetchedResultsController сортировка - PullRequest
1 голос
/ 13 января 2010

Я работаю над приложением, которое опирается на набор данных, которые можно сортировать различными способами. У меня есть настройки основных данных. У меня есть запрос на получение всех записей. У меня есть кнопка сортировки на левой стороне контроллера навигации. Это вызывает модальное представление с таблицей, которая имеет мои параметры сортировки. когда вы изменяете опцию, он закрывает модальное представление. Я могу получить доступ к выбранной опции, используя [[NSUserDefaults standardUserDefaults] objectForKey: @ "sortOption"].

Теперь мне нужно как-то обновить запрос на выборку с помощью нового массива дескрипторов сортировки и изменить sectionNameKeyPath.

Я попытался установить fetchedResultsController в ноль и вызвать reloadData для табличного представления. Кажется, ничего не обновляется.

Есть идеи?

Хови

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Решил мою проблему!

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

NSError *error = nil;

if (![[self fetchedResultsController] performFetch:&error])
{
  NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
  abort();
}
[self.tableView reloadData];
1 голос
/ 13 января 2010

Вы сможете просто изменить свойства объекта NSFetchRequest, с которым вы инициализировали NSFetchedResultsController, а затем выполнить [resultsController performFetch:...]. Например, вы можете изменить массив предикатов и дескрипторов сортировки в NSFetchRequest, затем вызвать performFetch.

См. Пример кода Apple CoreDataBooks, если вам нужен пример использования NSFetchedResultsController.

Обновление

Эх, к сожалению, если вы хотите изменить ключ раздела, я думаю, вам придется создать новый объект NSFetchedResultsController с новым ключом раздела. Кажется, что все свойства NSFetchedResultsController доступны только для чтения: (

0 голосов
/ 28 апреля 2010

Я бы обязательно удалил кеш fetchedResultsController, если вы включили кеширование.

[NSFetchedResultsController deleteCacheWithName:@"MyCacheName"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...