Что я должен делать в processContentChanges:?

Это processContentChanges: метод моего приложения, который вызывается NSPersistentStoreDidImportUbiquitousContentChangesNotification:

- (void)processContentChanges:(NSNotification *)notification {    
    [self.managedObjectContext performBlock:^{
        // Merge incoming data updates in the managed object context
        [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification];

        // Post notification to trigger UI updates
#warning What do I actually do here?
    }];
}

я использую NSFetchedResultsControllerПовсюду в моем приложении, чтобы пользовательский интерфейс обновлялся автоматически при получении изменений от другого устройства через iCloud. Это все, кажется, работает, но в комментарии говорится // Post notification to trigger UI updates был там в методе шаблона уже. Должен ли я на самом деле что-то делать здесь, или я могу оставить все как есть?

1 ответ

Решение

Ну, хотя у меня не было подтверждения этого, я не думаю, что есть что-то еще, что нужно сделать в этом методе, если соблюдены следующие критерии:

  1. Вы реализуете NSPersistentStoreDidImportUbiquitousContentChangesNotification правильно в соответствии с шаблоном, чтобы новое содержимое сливалось с контекстом управляемого объекта
  2. Ваш контент создан с использованием NSFetchedResultsController объекты
  3. Ваш viewControllers соответствует NSFetchedResultsControllerDelegate протокол и реализует controllerWillChangeContent:, controllerDidChangeContent: а также controller:didChangeObject:atIndexPath:forChangeType:newIndexPath
  4. В этих методах обновите свои представления соответственно, чтобы отобразить новый контент, удалить удаленный контент и обновить измененный контент.

Если у вас есть какие-либо объекты, которые используют CoreData без NSFetchedResultsController тогда вам может потребоваться обновить их, вручную повторно выбирая данные, когда NSPersistentStoreDidImportUbiquitousContentChangesNotification опубликовано CoreData.

Другие вопросы по тегам