Основные данные: , будет ли этот метод отражать изменение объекта?
сначала я создаю NSFetchedResultsController
с NSFetchRequest
который извлекает весь объект сущности «Entity».
а затем я вставляю новый NSManagedObject A, который является экземпляром «Entity» и Edit B, который также является экземпляром «Entity».
то я вызываю NSArray *result = [fetchedResultsController -fetchedObjects]
, будут ли A и B в результате?
- Динамическое создание базовой модели данных во время выполнения
- Циклический массив и выборка данных из Core-Data
- Запрос на объединение данных ios core
- Пример основных данных, Недопустимое обновление: недопустимое количество строк в разделе 0
- Crash Core Data - непризнанный селектор
На протяжении всего проекта я использую только один NSManagedObjectContext.
если я это сделаю, что это значит в его документе ?
fetchedObjects Результаты извлечения.
@property (nonatomic, readonly) NSArray * fetchedObjects Обсуждение Значение свойства равно nil, если performFetch: не был вызван.
Массив результатов включает только экземпляры объекта, указанного в запросе выборки (fetchRequest) и которые соответствуют его предикату. (Если запрос выборки не имеет предиката, то массив результатов включает все экземпляры объекта, указанные в запросе выборки.)
Массив результатов отражает состояние управляемых объектов в памяти в контексте управляемого объекта контроллера, а не состояние в постоянном хранилище. Однако возвращенный массив не обновляется, поскольку управляемые объекты вставляются, изменяются или удаляются.
- Функция даты () CoreData NSPredicate
- отфильтруйте атрибуты CoreData до уникальных и покажите их в UITableView
- Приложение отклонено из-за нарушения правил хранения iCloud
- NSManagedObject остается неисправностью
- Проблема с entityForName и ManagedObjectContext при расширении учебного материала
- NSFetchedResultsController пытается вставить нулевой объект?
- Основные данные - блокировка при удалении постоянного хранилища
- CoreData - Как использовать validateForDelete: чтобы определить, должен ли удаляться управляемый объект
Смысл последнего предложения
… Возвращенный массив, однако, не обновляется, поскольку управляемые объекты вставляются, изменяются или удаляются.
(на основе моих экспериментов): если вы храните ссылку на выбранные объекты
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], больше не нужно вызывать здесь.
Надеюсь, я мог бы, если это возможно, подтвердить это поведение.
Благодарю.