Но, похоже, это не так просто, как удалить ее из базовой модели данных и всего ссылающегося кода. Согласно этому видео с WWDC 2022 (https://developer.apple.com/videos/play/wwdc2022/10120/) к сущностям можно добавлять только новые сущности и новые атрибуты. Никакие другие операции не допускаются.
Как люди обычно справляются с этим случаем при использовании NSPersistentCloudKitContainer ? Я попытался удалить объект из базовой модели данных и получил несколько предупреждений в журнале о том, что он больше не может найти объект (понятно) и что постоянное отслеживание истории для этих транзакций прекратилось. В следующий раз, когда я снова запустил приложение, я не получил никаких предупреждений. Мне это показалось нормальным, но я спросил ChatGPT и не рекомендовал его удалять:
Конкретные сценарии
Сценарий 1: другое устройство (даже несколько месяцев спустя)
- Пользователь устанавливает приложение на новое устройство
- CloudKit отправляет все известные ему типы записей
- Включая сущность
- Основные данные не могут сопоставить их
- Ошибки синхронизации, удаление записей или зависание зеркалирования
Сценарий 2: возвращается старая версия приложения
- Пользователь открывает старую сборку из кэша TestFlight/App Store
- Эта версия по-прежнему создает Entity
- Загружает записи в CloudKit
- Новая версия не может их декодировать
Сценарий 3: Пограничные случаи фоновой синхронизации
- CloudKit доставляет изменения вне порядка
- Удаления происходят после вставок
- Core Data видит тип записи, который он больше не понимает
- Появляются ошибки зеркального делегирования позже, а не сразу
- Дни или недели спустя
- На другом устройстве
- Только у некоторых пользователей
- Как «случайный CloudKit» проблемы»
Подробнее здесь: https://stackoverflow.com/questions/798 ... tcontainer
Мобильная версия