У меня проблема с миграцией.
У меня есть номер (в основном, отметка времени), сохраненный в текущей версии приложения, которая находится в AppStore. Я хочу изменить это на миллисекунды. Таким образом, все значения меток времени нужно умножить на 1000.
Я пытаюсь сделать это, выполнив миграцию, выполнив следующие шаги, как указано в ответе ниже:
Swift - Coredata Migration -Установите новое значение атрибута в соответствии со старым значением атрибута
Но в нем не упоминается об установке значения NSInferMappingModelAutomaticsOption & NSMigratePersistentStoresAutomaticsOption :
[NSInferMappingModelAutomaticallyOption: true,
NSMigratePersistentStoresAutomaticallyOption: true,
NSPersistentStoreFileProtectionKey:FileProtectionType.completeUntilFirstUserAuthentication] as [String: Any]
Если я оставлю оба значения true, тогда метод в моем классе политики миграции не будет вызван, а значения не будут преобразованы в миллисекунды.
, если я отмечу переменную ниже как false, как предлагается в некоторых ответах:
NSInferMappingModelAutomaticallyOption: false
тогда я получаю сообщение об ошибке: Ошибка переноса хранилища. Отсутствует модель сопоставления. и приложение аварийно завершается.
, если я отмечу обе переменные как ложные, как предлагается в некоторых ответах:
NSInferMappingModelAutomaticallyOption:false, NSMigratePersistentStoresAutomaticallyOption:false
, тогда я получаю ошибку: «Версия управляемой объектной модели, используемая для открытия постоянного хранилища, несовместима с той, которая использовалась для создания постоянного хранилища.» , и приложение аварийно завершает работу
Так что любой может помочь мне в решении этой проблемывопрос, что возможно я делаю не так. Я впервые пытаюсь изменить значения с помощью миграции.
Я предполагаю, нужно ли мне выполнять каждый шаг вручную: например,
- Запуск миграции с помощью диспетчера миграции
- Обработка всех возможных прогрессивных миграций.