Вопрос по ios, web-services – Приложение для iOS - архитектура / пример для синхронизации CoreData с Web-сервисом

7

Я ищу пример приложения или более архитектурную дискуссию для создания приложения, которое поддерживает локальное постоянное хранилище (CoreData) и синхронизирует его с веб-сервисом, таким как Flickr. В моем случае это Salesforce, но шаблон должен быть похож на многие приложения для Flickr, Twitter, IMAP и так далее.

Примеры вопросов: где лучшие точки для синхронизации? какие проверенные структуры данных для поддержания локальных изменений - сохранить «измененный» BOOL в местном магазине для каждого несинхронизированного изменения; Я предпочел бы флаг уровня поля против флага уровня записи)?

Конечно, я должен оптимизировать это самостоятельно, зная количество записей (100) и изменений (10 'в день) и вероятность конфликтов (низкая в моем случае на уровне поля).

Ваш Ответ

1   ответ
3

Start by modeling a local CoreData/Sqlite database that mirrors your online database. Add an NSDate lastModified property to every row of each table. This will allow me to track changes at the record level, instead of field level. This helps reduce sync complexity, and in most real world scenarios, record level syncing is sufficient. Perform an automatic sync when the app starts, and also provide a prominent "Sync" button in your navigation bar. This way the user always has an updated dataset when the app launches after a long period, and can sync the latest changes over the course of a day. I would avoid doing background sync while the app is being used. This will make your app more complex and error-prone when you're trying to tackle other things. So postpone working on background/automatic sync until you have the rest working. Once I have my sync working reasonably well at launch and on-demand, I would try and support background sync. I would also try and eliminate the "Sync" button, so the user never has to think about syncing - (it's always up to date as far as the user is concerned). But this would be a longer term enhancement, which i would attempt only after I have "on-demand" syncing working rock solid.

Надеюсь, это поможет вам начать. Я хотел бы услышать, если вы думаете по-другому об этом.

Не могли бы вы предоставить нам упрощенный пример проекта, чтобы увидеть, как выглядит рабочий код? Спасибо @melsam!
Нашел хороший урок от RWraywenderlich.com/15916/…
Большое спасибо @melsam !! Извините, мой проект был приостановлен на некоторое время, но я скоро начну работать с вашими рекомендациями. tschloss

Похожие вопросы