2010-10-21 3 views
6

Просматривает сообщения, подобные этому, но никто не ответил на мою проблему.NSFetchedResultsController методы делегата не запускаются после mergeChangesFromContextDidSaveNotification

Как CoreDataBooks, я использую отдельный MOC для добавления и редактирования элементов и соблюдать соответствующие уведомления, например, так:

- (void)addControllerContextDidSave:(NSNotification*)saveNotification { 

    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
    // Merging changes causes the fetched results controller to update its results 
    [context mergeChangesFromContextDidSaveNotification:saveNotification]; 
    NSLog(@"merging changes in rootview"); 
} 

Когда я ворота, он правильно заметил. Отладка уведомления показывает правильный контекст, и отладка контекста показывает только что добавленный элемент. Сообщение журнала также отлично печатается. Но ничего не происходит. Ни один из методов делегирования режима NSFetchedResultsController не обновляется и не обновляется.

Я не пытался кешировать или очищать его. Я пробовал reloadData на столеView, но ничего. Когда я ухожу из приложения и перезагружаюсь, он отображается нормально.

UPDATE: Уведомление действительно содержит правильный контекст в качестве его object, который содержит правильный элемент, но userInfo хэш не имеет ничего в нем:

userInfo = { 
    inserted = "{(\n)}"; 
    updated = "{(\n)}"; 
} 

Так выглядит уведомление не имеют какие-либо изменения в нем, несмотря на то, что они имеют правильный контекст с измененным предметом .... хмммм.

ответ

1

И награда за туповатую ошибку идет toooooo ... Кристоф!

Причина, по которой уведомление ничего не показывало, состояло в том, что я забыл вынуть сохранение на отдельном MOC перед вызовом делегата, который настроил уведомление, а затем снова сохранил его.

Поскольку MOC был только что сохранен, второе сохранение не изменилось, и поэтому уведомление оставалось пустым. Удаление первого сохранения, как я должен был сделать намного раньше, устранил проблему.

Смежные вопросы