Я использую 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