Стратегии обработки будущих изменений схемы в CloudKit

Насколько я понимаю, CloudKit состоит в том, что если у пользователя есть два устройства - одно с версией приложения со схемой v2, а другое со схемой v1, - устройство со схемой v1 получит новые данные, но только для полей в v1. Все новые данные в новых полях, созданных в схеме v2, отбрасываются для этого конкретного устройства. Позже, когда приложение со схемой v1 обновляется до схемы v2, новые данные в полях v2, сделанные в более новой версии приложения, больше не извлекаются, и два устройства имеют несоответствие данных.

Это понимание исходит из этого блога, в котором обсуждается NSPersistentCloudKitContainer (что я использую).

Это явно проблема, может пройти несколько дней между тем, когда первое устройство обновляет приложение (например, iPhone), и когда второе устройство обновляет приложение (например, iPad). Какие стратегии я могу использовать в своей схеме или реализации для решения этой проблемы?

1 ответ

Если ваша модель не поддерживает управление версиями, то лучше всего ждать использования новых частей модели до тех пор, пока достаточное количество людей не обновится до нее. Это предполагает, что вы используете NSPersistentCloudKitContainer.

Допустим, пользователь использует версию 1, и модель объекта на его устройстве выглядит следующим образом:

      @NSManaged public var dateAdded: Date?
@NSManaged public var id: String?
@NSManaged public var title: String?

При работе с версией 2 вы меняете производственную модель в iCloud, чтобы добавить свойство в Listорганизация:

      @NSManaged public var dateEdited: Date? //NEW
@NSManaged public var dateAdded: Date?
@NSManaged public var id: String?
@NSManaged public var title: String?

Их приложение должно продолжать работать нормально, пока вы не реализовали какие-либо функции, использующие новое свойство.

Добавление совершенно нового объекта, такого как Notesне должно влиять на существующих пользователей в рабочей среде, пока вы не реализуете функцию, использующую эту сущность.

Ожидание нескольких выпусков перед использованием изменений новой модели данных должно дать людям достаточно времени для обновления до версии с новой моделью.

Источники

Другие вопросы по тегам