Как изменить значение атрибута с помощью миграции в Swift? - PullRequest
0 голосов
/ 12 октября 2019

У меня проблема с миграцией.

У меня есть номер (в основном, отметка времени), сохраненный в текущей версии приложения, которая находится в 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

, тогда я получаю ошибку: «Версия управляемой объектной модели, используемая для открытия постоянного хранилища, несовместима с той, которая использовалась для создания постоянного хранилища.» , и приложение аварийно завершает работу

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

Я предполагаю, нужно ли мне выполнять каждый шаг вручную: например,

  1. Запуск миграции с помощью диспетчера миграции
  2. Обработка всех возможных прогрессивных миграций.
...