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