Я использую NSFetchedResultsController для заполнения и управления источником данных моих таблиц.
Когда пользователь выбирает определенную строку, всплывает лист действий и позволяет пользователю изменить значение для этой строки:
NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:selectedRowIndexPath];
[managedObject setValue:status forKey:@"status"];
Это работает очень хорошо, и я сразу вижу изменения в виде таблицы. Это означает, что NSFetchedResultsController знает, что что-то изменилось, и, следовательно, перезагружает эту табличную ячейку. Когда я останавливаюсь и закрываю свое приложение (полностью), а затем снова открываю его, изменение не сохраняется.
Я думаю, что NSFetchedResultsConroller заботится о сохранении изменений.
Нужно ли сохранять вручную, используя следующий код после каждого изменения?
// Save the context.
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
Или, возможно, позвоните по этому коду:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath