Я пытаюсь написать приложение Core Data для iPhone, которое использует внешний источник данных. Я на самом деле не использую Core Data для сохранения своих объектов, а скорее для управления жизненным циклом объекта. У меня есть довольно хорошая идея о том, как использовать Core Data для локальных данных, но я столкнулся с несколькими проблемами с удаленными данными. Я просто использую API Flickr в качестве примера.
Во-первых, если мне нужно, скажем, список последних фотографий, мне нужно взять их из внешнего источника данных. После того, как я получил список, кажется, что я должен повторить и создать управляемые объекты для каждой фотографии. На этом этапе я могу продолжить работу со своим кодом и использовать стандартный API-интерфейс Core Data API для настройки запроса на выборку и получения подмножества фотографий, скажем, о собаках.
Но что если я захочу продолжить и получить список фотографий пользователя? Поскольку существует вероятность того, что эти два набора данных могут пересекаться, нужно ли выполнять запрос выборки для существующих данных, обновлять то, что уже есть, и затем вставлять новые объекты?
-
В старом шаблоне я просто имел бы отдельные структуры данных для каждого из этих наборов данных и получал бы к ним соответствующий доступ. Недавний набор фотографий и и пользователей набор фотографий. Но так как общий шаблон Core Data, похоже, использует один контекст управляемого объекта, кажется (я могу ошибаться), что мне нужно объединить мои данные с основным пулом данных. Но это похоже на большие накладные расходы, просто чтобы получить список фотографий. Должен ли я создать отдельный контекст управляемого объекта для другого набора? Должны ли основные данные здесь использоваться?
Я думаю, что мне нравится в Core Data то, что раньше (для веб-службы) я делал запрос на определенные данные и либо фильтровал их в запросе, либо фильтровал их в коде и создавал список, который я использовал бы. С помощью Core Data я могу просто получить список объектов, добавить их в свой пул (при необходимости обновив старые объекты), а затем выполнить запрос к нему. Однако при таком подходе я вижу одну проблему: если объекты удаляются извне, я не могу этого знать, поскольку я храню свои старые данные.
Я здесь далеко от базы? Есть ли какие-то шаблоны, которые люди используют для работы с удаленными данными и базовыми данными? :) Я нашел несколько сообщений людей, в которых говорилось, что они это сделали, и что это работает для них, но мало примеров. Спасибо.