Получить связанные объекты Core Data в фоновом режиме?(чтобы предотвратить зависание пользовательского интерфейса) - PullRequest
0 голосов
/ 25 марта 2012

В настоящее время я использую метод, в котором я запускаю запрос на выборку в фоновом режиме для получения идентификаторов объектов, а затем создаю их экземпляры с помощью -existingObjectWithID:error:.

Проблема заключается в том, что эти объекты имеют отношение "многие"большое количество предметов.И пользовательский интерфейс на некоторое время зависает при доступе к этим объектам.(Доступ к ним осуществляется сразу.)

Я предполагаю, что связанные объекты являются неисправностями.Я пытаюсь найти способ предварительно загрузить их в фоновом режиме.Есть ли решение этой проблемы?

Ответы [ 3 ]

0 голосов
/ 25 марта 2012

Знаете ли вы, что именно ваш основной поток вызывает замедление (конечно, звучит так) - я бы наверняка использовал инструменты и «Time Profiler», а также есть путь к включите отладку и синхронизацию SQL .

Если это ваш основной поток, есть фантастических видеороликов WWDC (посмотрите также на 2010 год, а не только на 2011 год) о том, какоптимизировать базовые данные.

0 голосов
/ 13 июня 2013

Основные данные не являются потокобезопасными.Так что для фонового потока у вас должен быть отдельный управляемый контекст.Как правило, основные данные не требуют много времени для загрузки.Но если вы храните BLOB-объекты (например, данные изображений), это может повлиять на производительность.Вы должны NSFetchRequestController с размером страницы, который вы хотите установить.Это намного быстрее, так что вам, вероятно, не нужно беспокоиться о фоновой загрузке

0 голосов
/ 25 марта 2012

Попробуйте метод setRelationshipKeyPathsForPrefetching: на NSFetchRequest. Передайте массив ключей, которые представляют отношения, которые должны быть извлечены, а не повреждены.

...