Я пишу приложение с двумя таблицами на одном экране. Левая таблица - список папок, а в правой таблице показан список файлов. При нажатии на строку слева, в правой таблице будут отображаться файлы, принадлежащие этой папке.
Я использую 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 извлекает объекты (есть ли система кеширования?), но раньше я делал подобные вещи (изменение предикатов, повторное извлечение данных и обновление таблицы) с помощью одиночных табличных представлений и все прошло хорошо.
Если кто-то может дать мне подсказку, я буду очень благодарен.
Спасибо заранее.