Использование Core Data в качестве хранилища для удаленных объектов - PullRequest
0 голосов
/ 05 февраля 2011

Я хочу создать приложение галереи, которое получало бы миниатюры и метаданные из Интернета, используя XML \ JSON (на данном этапе это не имеет значения), и сохраняло эти изображения локально. Я хочу использовать Core Data для локального хранения, однако я много искал и не нашел простых решений для синхронизации локальных данных с удаленным сервером. Какие общие шаблоны iOS разработчики используют для решения этой проблемы?

Мне нужна действительно простая функциональность.

Приложение для iOS должно иметь возможность:

  1. загрузить все новые данные с веб-сервера
  2. показать полноразмерное изображение
  3. удалить миниатюры из локального хранилища, если они были удалены с сервера

Звучит просто, но для меня это выглядит несколько сложно, потому что обычно может быть два условия в зависимости от того, имеет ли пользователь подключение к Интернету или нет. Так, например, я не могу использовать дату загрузки в качестве отметки для «новых» изображений. Но я думаю, что это можно сделать, сравнивая идентификаторы или даты последних изображений устройства и сервера.

Другой момент заключается в том, что я не могу контролировать API сервера и не хочу писать прокси-сервер, который будет напрямую связываться с устройством. Но как я мог тогда проверить, было ли изображение удалено с сервера? Проверка каждого имеющегося на устройстве эскиза заняла бы много времени. Я знаю, что могу выполнить эту проверку, когда пользователь пытается загрузить полноразмерное изображение ... Но это не очень хорошая идея.

Существуют ли какие-либо общие шаблоны, методы или структуры, которые помогут синхронизировать данные на iOS между веб-сервисом и устройством (Core Data)?

1 Ответ

2 голосов
/ 27 марта 2011

Вы определенно хотите посмотреть на RestKit, на GitHub.Делает именно то, что вы хотите, и это очень здорово.Я осуществлял это в течение нескольких недель, и я нахожу все виды использования для этого.Очень активная группа Google тоже.

...