У меня есть база данных CoreData, полная объектов, которые связаны друг с другом.CoreData: эффективный способ извлечения и связывания объектов
EntityFoo - атрибут: UniqueID, отношения: один-ко-многим другим объектам EntityFoo, отношения: один-к-многим другим EntityUnresolvedRelationship объекты
EntityUnresolvedRelationship - атрибут: UniqueID, inverseRelationship: назад к объекту EntityFoo
Когда приложение для iPhone запускается, я получаю информацию об этих объектах из веб-службы. Я анализирую ответ веб-службы и создаю объекты Foo. В то время, когда я загружаю и разбираю данные и помещаю объекты Foo в CoreData, я не хочу тратить время, чтобы найти другие объекты EntityFoo, которые должны быть связаны с этим объектом, и вполне вероятно, что у меня пока нет объект Foo, чтобы связать еще, если он еще не был загружен и проанализирован, поэтому я быстро создаю объект UnresolvedRelationship для отношений и сохраняю в нем уникальный идентификатор, чтобы впоследствии разрешить отношения для этого объекта.
Теперь я пытаюсь найти наиболее эффективный способ пройти через все объекты Foo или UnresolvedRelationship и создать правильные отношения CoreData между всеми объектами Foo. Другими словами, в конечном итоге я не хочу иметь объекты UnresolvedRelationship ... это было просто временным ... объекты Foo будут иметь отношения только друг к другу.
Там может быть 15 000 плюс объекты Foo.
Есть ли хороший способ получить все объекты Foo и все объекты UnresolvedRelationship таким образом, что я могу пройти один из массивов и быстро найти соответствующий объект в другом массиве с помощью его уникального идентификатора, чтобы я мог настроить отношения CoreData?
Во всяком случае, хотелось бы, чтобы любые указатели.
Спасибо, Маркус. Я не могу разрешить все отношения во время разбора, потому что я еще не знаю обо всех объектах, которые мне нужно связать. Из-за этого кажется, что это двухэтапный процесс: вытащить все объекты, а затем настроить все отношения. Мой текущий подход к разрешению состоит в том, чтобы извлечь все объекты и поместить их в словарь поиска на основе uniqueId. Затем я извлекаю все неразрешенные объекты и прохожу их и настраиваю отношения. Я удаляю временные объекты, когда я иду, и сохраняю изменения в конце. – toofah
Сохраняете ли вы объекты перед выполнением этих отношений? –
Да. Во время операции загрузки и разбора я тщательно управляю памятью с помощью пула автозаполнения, как вы предлагаете, и я сохраняю объекты в постоянном хранилище, когда я иду. – toofah