У меня UITableView
питание от NSFetchedResultsController
, и я пытаюсь правильно поддержать переупорядочение.
Внутри moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
Я отвечаю на переупорядочение путем обновления значения order
на NSManagedObject
s и сохраняю контекст следующим образом:
[self.fetchedResultsController.managedObjectContext save:nil];
Так что теперь все объекты имеют правильное значение order
, и контроллер результатов NSFetchRequest
сортирует по этому значению правильно.
Это, кажется, работает, однако, когда я прокручиваю вверх и вниз в табличном представлении, старые значения отображаются. Похоже, что когда я использую objectAtIndexPath
на NSFetchedResultsController
, он не возвращает последний объект.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ... cell generation code ...
NSManagedObject *obj = [self.fetchedResultsController objectAtIndexPath:indexPath];
[cell.textLabel setText:sideEffect.name];
}
Если я уйду, а затем вернусь, ячейки будут в правильном порядке.
После моего звонка на save
мне нужно:
- Обновить
NSFetchedResultsController
- сделать недействительным кеш
- Обновить / сбросить что-то на
UITableView
?