Я добавляю функцию "автономного режима" в приложение, над которым сейчас работаю. По сути, идея состоит в том, что пользователи должны иметь возможность вносить изменения в данные, например, редактировать описание элемента, без подключения к Интернету, и изменения должны сохраняться между запусками приложений.
Каждое изменение обычно приводит к запросу API при работе в сети, но в автономном режиме ситуация иная.
Сейчас это реализовано путем хранения всех данных, поступающих из API, в базе данных Core Data, которая действует как кеш. Сущности, которые может редактировать пользователь, помимо обычных атрибутов, имеют следующие:
locallyCreated
- был ли объект создан офлайнlocallyDeleted
- объект удален офлайнlocallyUpdated
- обновлено
Это позволяет искать новые / удаленные / обновленные объекты и отправлять соответствующие запросы API при выполнении синхронизации.
Это хорошо сработало для создания и удаления объектов, однако один недостаток, который я обнаружил в этом подходе, заключается в том, что когда новые данные извлекаются из API, все локальные изменения (то есть атрибуты объектов, отмеченных как локально обновленные) теряются, что означает, что они должны быть отдельно хранится как-то.
Как лучше всего подойти к этой проблеме?