Владимир *NSFetchedResultsController "The change tracking and undo management mechanisms are highly optimized and hence intricate and delicate." - NSManagedObjectContext Class Reference
delegate, etc) • UI перефетчивает список заново • UI затем делает полный reload (UITableView/ UICollectionView) • Optional: UI вычисляет diff и показывает его красиво • Paging: NSFetchRequest limit+offset
получить данные об изменениях в конкретном объекте* • Кэш FRC - только для информации о секциях • Мерж в главный контекст все равно медленный :( *в режиме работы на контексте, в который мержат изменения из другого
вставке • Невозможность мержа/резолва конфликтов между разными версиями объекта • Проблемы валидации обязательных атрибутов с дефолтным значением в модели CoreData
обратных связях • Необходимость автообновления и подписки на изменения одиночного объекта • Необходимость управлять размером дерева зависимостей объектов
от FRC • Конвертация NSManagedObject в Mantle • Сбор всех изменений в один пакет и отправка его в RACSignal *updates • ... включая первоначальный фетч и изменения фетч рейнджа
= nil;! VIBUnsafeUnretainedProxy *proxy = _frcDelegateProxy;! [_frc.managedObjectContext performBlock:^{! //does not matter, but we need for this block to retain proxy! //so that FRC can complete calling his callbacks to it! proxy.proxiedObject = nil;! }];! }! ! ...! ! @end
mergeChangesFromContextDidSaveNotification:notification];! ! for (NSManagedObject *unsafeObj in notification.userInfo[NSUpdatedObjectsKey]) {! //Force the refresh of updated objects which may not have been registered in this context.! NSManagedObject *managedObj = [context existingObjectWithID:unsafeObj.objectID error:NULL];! if (manangedObj != nil) {! [context refreshObject:managedObj mergeChanges:YES];! }! }! ! ...