Я пишу приложение с двумя таблицами на одном экране. Левая таблица представляет собой список папок, а правая таблица показывает список файлов. При нажатии на строку слева в правой таблице отобразятся файлы, принадлежащие этой папке.
Я использую Core Data для хранения. Когда выбор папки изменяется, предикат выборки NSFetchedResultsController правой таблицы изменится и выполнит новую выборку, а затем перезагрузит данные таблицы. Я использовал следующий фрагмент кода:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list = %@",self.list];
[fetchedResultsController.fetchRequest setPredicate:predicate];
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[table reloadData];
Однако результаты выборки все те же . Я использовал предикат NSLog до и после получения, и они были верны с обновленной информацией. Результаты выборки остаются такими же, как и исходная выборка (при загрузке представления).
Я не очень знаком с тем, как Core Data извлекает объекты (есть ли система кеширования?), Но я уже делал подобные вещи раньше (изменяя предикаты, повторно выбирая данные и обновляя таблицу) с использованием отдельных представлений таблицы и все прошло хорошо.
Если бы кто-то мог дать мне подсказку, я был бы очень признателен.
Заранее спасибо.