У меня есть сущность с отношением числа ко многим. Я представляю определенные свойства объекта в виде таблицы, используя NSFetchedResultsController. Из всех отношений, которые имеет сущность, отображаются значения только одного из отношений (они в настоящее время сбой в методе cellforrowat ...). Мне кажется, что это может повлиять на производительность. Возможно ли выявить конкретную взаимосвязь во время создания запроса Fetch, чтобы CoreData не приходилось извлекать значения при прокрутке таблицы?Неисправность отношения CoreData при извлечении основного объекта
ответ
Я не уверен, что я понимаю модель данных, которую вы описываете. Если в качестве содержимого строк таблицы отображаются только члены одной из сторон своих связей, то вы можете отображать только свойства, отображаемые в каждой из видимых строк, используя -setPropertiesToFetch: по вашему запросу на выборку, например, в следующий пример:
NSArray *propertiesToFetch = [[NSArray alloc] initWithObjects:@"title", @"thumbnailImage", nil];
[fetchRequest setPropertiesToFetch:propertiesToFetch];
[propertiesToFetch release];
Однако, если то, что вы описываете список сущностей, с одним из отображаемых элементов в строке таблицы составляет от отношения к одному, вы можете использовать -setRelationshipKeyPathsForPrefetching:
как говорит Барри. Тем не менее, в этом случае я бы предложил денормализовать вашу модель данных и переместить это свойство из отношения к непосредственному отношению к исходной сущности. Обходные отношения намного дороже, чем доступ к свойствам.
Вы можете вручную скомпрометировать объекты, но я не думаю, что вы что-то выиграете. Независимо от того, виноваты ли вы во всех объектах сразу или по какой-либо причине вы по очереди, по мере необходимости каждый объект по-прежнему будет ошибочен в отдельности.
Я написал приложения, которые выполняют именно то, что вы описали, сбой в большом количестве данных для отображения в виде таблицы и никогда не замечали снижения производительности. Помните, что будут обнаружены только объекты, соответствующие отображаемым ячейкам таблицы.
В целом, я бы сказал, не пытайтесь перехитрить Core Data. На данный момент у него есть годы оптимизации производительности. Хотя интуитивно может показаться, что ошибка в 100 объектах потребует 100 запросов к базе данных, это не обязательно так.
Во-первых, я бы не стал предполагать, что поведение основных данных по умолчанию менее реалистично, чем предлагаемый вами подход: без данных для резервного копирования ваших усилий оптимизация почти наверняка пойдет наперекосяк.
Это, я считаю, -[NSFetchRequest setRelationshipKeyPathsForPrefetching:]
выполнит то, что вы хотите.
- 1. Создание объекта отношения Coredata
- 2. Добавление объекта в CoreData Отношения
- 3. Получение объекта отношения в coredata
- 4. Как я могу очистить записи отношения Parse.Object при извлечении объекта?
- 5. Отношения CoreData
- 6. Как устранить неисправность связи в CoreData При анализе RESTKIT?
- 7. Отношения CoreData Lazy Load?
- 8. CoreData переходных отношения примера
- 9. CoreData отношения возвращает _NSCoreDataTaggedObjectID
- 10. Зависимость отношения CoreData
- 11. Как обрабатывать отношения в CoreData при извлечении данных из JSON + Swift или ObjC
- 12. Ошибка при сохранении основного объекта данных
- 13. CoreData: неисправность не стреляя через к-одному
- 14. iOS CoreData - перестроить отношения
- 15. Два NSArrayControllers и отношения (CoreData)
- 16. CoreData - отношения многие-ко-многим
- 17. Отношения «один-на-один» CoreData
- 18. Coredata Удалить и прочитать Отношения
- 19. CoreData: обратные отношения, вызывающие сбой при сохранении
- 20. Тернарные отношения в coreData
- 21. CoreData отношения между объектами
- 22. CoreData отношения с подклассу
- 23. CoreData и dispatch_async с помощью объекта из основного managedObjectContext
- 24. Неисправность при извлечении изображений «favicon.ico» с использованием HTTP-запросов AJAX
- 25. CoreData - проблемы с доступом отношения
- 26. CoreData NSSQLiteStoreType не получает отношения
- 27. Копирование объекта отношения coredata с новым вводом строки
- 28. Newtonsoft.Json.JsonSerializationException при извлечении объекта из хранилища Akavache
- 29. InversifyJS: Ошибка при извлечении объекта из контейнера
- 30. Исключение Null Pointer при извлечении объекта JSON