Как я могу сделать миграцию основных данных? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть старая версия основных данных с Allows external storage в двоичных данных.И я создал новый, где Allows external storage не было проверено.Когда я попытался запустить свое приложение, я получил ошибку:

Неразрешенная ошибка

Ошибка домена = NSCocoaErrorDomain Code = 134140 "Операция не может быть завершена. (Ошибка Какао 134140.) "UserInfo = 0xbd5cd20 {reason = Не удается найти или автоматически определить модель сопоставления для миграции, destinationModel = ...

Затем я создал новый файл в моем проекте - Model.xcmappingmodel.Я выбрал исходную модель данных и целевую модель данных.

После этого я вижу

Ошибка NSPersistentStoreCoordinator: NSPersistentStoreCoordinator _coordinator_you_never_successfully_opened_the_database_schema_mismatch

1 Ответ

0 голосов
/ 18 октября 2018

Для будущего контекста ... запись во внешнее хранилище CoreData нарушена, начиная с iOS 12. Мое решение основано на комментариях Дрю МакКормака в Twitter.

Стоит отметить, чтонарушается только запись, чтение остается функциональным.

Создайте новое свойство, например «original property name»Internal того же типа, но с Allows external storage box unchecked .

Теперь у вас естьдва варианта:

  • Переносить все при первоначальном запуске приложения - т.е. извлекать все объекты с предикатом, подобным этому «original property name»Internal == NULL && «original property name» != NULL, и перемещать данные по (я сделал это).
  • Мигрируйте на лету, т.е. используйте два свойства параллельно, но записывайте только в «original property name»Internal (в то время как nil ing «original property name»)

Стоит отметить, что данные вашего клиента в последний раз в безопасности, пока ониобнови это.Тред осторожно, но ты должен быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...