Наложить одну запись в хранилище сохраняемости управляемого объекта Core Data («Предпочтения») - PullRequest
0 голосов
/ 14 апреля 2020

Я использую NSPersistentCloudKitContainer в качестве хранилища данных. Я хотел бы знать, каков наилучший подход к ведению одной записи, скажем, объекта Preferences , учитывая, что в распределенной среде нет ни одной "правды".

Рассмотрим пример: вы запустили приложение в первый раз, создается объект Preferences со значениями по умолчанию и с помощью magi c NSPersistentCloudKitContainer, отправляемый в облако. Теперь вы снова запускаете приложение на другом компьютере, и поскольку данные из iCloud еще не были синхронизированы c, приложение создает еще одну запись объекта Предпочтения . После завершения syn c мы получим две записи.

Как один go объединяет / объединяет эти две записи, чтобы убедиться, что у нас есть только один экземпляр (предпочтительно один из облака) )?

Предлагаемое решение # 1

Сущность Предпочтения может иметь атрибут, то есть «имя», которому мы присваиваем некоторое постоянное значение «настройки» , Затем мы добавляем ограничение к этому атрибуту, делая невозможным две Preferences записи с одинаковым значением атрибута. Затем мы устанавливаем политику слияния для NSRollbackMergePolicy и надеемся, что объект NSPersistentCloudKitContainer будет делать правильные вещи. У меня есть сомнения, что это будет работать правильно, потому что, как правило, политика слияния предназначена для несохраненного управляемого контекста и постоянного хранилища, а НЕ между локальным и удаленным постоянным хранилищами.

Предлагаемое решение # 2

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

Возможно, есть другие, лучшие варианты?

Спасибо

...