Я настраиваю базовую службу синхронизации для iPad-приложения, которое я разрабатываю. Цель состоит в том, чтобы данные были согласованы в нескольких экземплярах iPad-приложения, а также имели доступную только для чтения информацию о данных в Интернете, и, следовательно, распространяли пользовательское решение.Core Data Sync - Отслеживание удаленных объектов
Ток заключается в следующем:
- Каждый объект имеет поле A «создано», «модифицированные» и «UUID», которые автоматически обновляются Core Data
- На синхронизации, каждого объекта с создано или измененная дата после того, как последняя дата синхронизации была сериализована в JSON и отправлена на сервер
- Сервер сохраняет любые изменения в базе данных MySQL с использованием UUID с клиентским кодом как ПК (при наличии конфликта он использует только недавно измененные сущность как «истинная» версия, ничего необычного там) и отправляет обратно все обновленные объекты клиенту
- Затем клиент сливает эти изменения обратно в Core Data DB
Это все, кажется, работает нормально. Моя проблема заключается в том, как отслеживать удаленные объекты с помощью этого метода? Я предполагаю, что я могу добавить «удаленный» флаг для каждого объекта и установить его каждый раз, когда клиент удалит что-то, затем я могу нажать это изменение на сервер с остальными данными синхронизации. Как только синхронизация будет завершена, клиент может фактически удалить эти объекты. Мои вопросы:
- Могу ли я переопределить методы удаления основных данных, чтобы автоматически установить этот флаг?
- Должно ли это потребовать неограниченное количество всех удаленных объектов на сервере? Мы не будем знать, когда каждый клиент синхронизировал и фактически удалил каждый объект (я в настоящее время не отслеживаю экземпляры клиента)
- Есть ли лучший способ сделать это?
Спасибо большое за это. На данный момент я принял гибридный подход, который выполняет синхронизацию, как я описал в вопросе, но теперь также поддерживает таблицу удаленных объектов. В будущем я попытаюсь перейти на полностью дельта-систему. – NathanGaskin