Нужно ли мне вручную сохранять управляемыйObjectContext для NSFetchedResultsController, если я изменю какой-либо атрибут?

Я использую 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
6
задан Pieter 14 March 2012 в 12:38
поделиться