Основные данные: , будет ли этот метод отражать изменение объекта?

сначала я создаю NSFetchedResultsController с NSFetchRequest который извлекает весь объект сущности «Entity».

а затем я вставляю новый NSManagedObject A, который является экземпляром «Entity» и Edit B, который также является экземпляром «Entity».

то я вызываю NSArray *result = [fetchedResultsController -fetchedObjects] , будут ли A и B в результате?

На протяжении всего проекта я использую только один NSManagedObjectContext.

если я это сделаю, что это значит в его документе ?

fetchedObjects Результаты извлечения.

@property (nonatomic, readonly) NSArray * fetchedObjects Обсуждение Значение свойства равно nil, если performFetch: не был вызван.

Массив результатов включает только экземпляры объекта, указанного в запросе выборки (fetchRequest) и которые соответствуют его предикату. (Если запрос выборки не имеет предиката, то массив результатов включает все экземпляры объекта, указанные в запросе выборки.)

Массив результатов отражает состояние управляемых объектов в памяти в контексте управляемого объекта контроллера, а не состояние в постоянном хранилище. Однако возвращенный массив не обновляется, поскольку управляемые объекты вставляются, изменяются или удаляются.

Смысл последнего предложения

… Возвращенный массив, однако, не обновляется, поскольку управляемые объекты вставляются, изменяются или удаляются.

(на основе моих экспериментов): если вы храните ссылку на выбранные объекты

 NSArray *result = [fetchedResultsController fetchedObjects]; 

то этот массив, на который ссылается result , не будет обновляться, если объекты будут вставлены, изменены или удалены. Поэтому акцент делается на « возвращенный массив не …».

Но если вы позвоните

 [fetchedResultsController fetchedObjects] 

позже снова возвращаемое значение представляет собой новый список объектов, включая изменения.

Точнее: если вы установили делегат, FRC отслеживает изменения в контексте управляемого объекта и вызывает функции делегата FRC. Функции делегата не вызывается немедленно, когда объекты вставлены / изменены / удалены, но либо

  • когда контекст сохраняется явно или
  • когда уведомления об изменениях обрабатываются в цикле выполнения.

Как только вызывается controllerDidChangeContent: новый вызов [fetchedResultsController fetchedObjects] возвращает обновленный список объектов.

@Dwayne использует [fetchedResultsController.managedObjectContext processPendingChanges] после вашего вставки / удаления / обновления, если вы хотите мгновенное обновление вашего объекта-делегата, обычно он вызывается в конце runloop.

Я просто сделал эксперимент по этому поводу. Кажется, что номер счета fetchedObjects был обновлен в этом вызове:

  • (void): (NSFetchedResultsController *) controller didChangeObject: (id) anObject atIndexPath: (NSIndexPath *) indexPath forChangeType: (NSFetchedResultsChangeType) type newIndexPath: (NSIndexPath *) newIndexPath

Дозировать это означает, что это постепенное поведение каждый раз, когда оно называется? И весь список готов, когда вызывается controllerDidChangeContent: так как все изменения выполнены?

@Maciek Czarnik Спасибо за ваше объяснение. Однако, если мы сможем получить изменения каждый раз [fetchedResultsController.managedObjectContext processPendingChanges], больше не нужно вызывать здесь.

Надеюсь, я мог бы, если это возможно, подтвердить это поведение.

Благодарю.

  • Основные данные: Родительский контекст и распространение изменений
  • Контексты дочерних элементов Core Data не требуют предварительной выборки
  • Основные данные - NSPredicate для фильтрации пустой строки, работающей некорректно
  • Основные данные не могут генерировать предложение where для предиката (Swift)
  • CoreData конвертирует NSNumbers в BOOL
  • Какой объект возвращается с помощью запроса Fetch в основных данных?
  • значение управляемого объекта равно случайным образом (пример проекта включен)
  • необъяснимая поведенческая разница между objectWithID: по сравнению с existingObjectWithID:
  • Просмотр содержимого основных данных
  • Основные данные NSFetchRequest setResultType: NSDictionaryResultType не работает
  • Взаимодействие данных и выборки во многих отношениях
  • Давайте будем гением компьютера.