Вы в основном на правильном пути.
Вероятно, я бы создал NSOperation для миграции, которая запускается при запуске приложения, если данные должны быть перенесены.
В зависимости от вашего приложения, эта операция может выполняться в фоновом режиме (помните о правилах создания потоков в основных данных!), Взаимодействуя с основным потоком NSManagedObjectContext с помощью уведомлений.
Если ваше приложение не имеет смысла без переноса этих данных, возможно, вы создали модальное представление с индикатором прогресса во время переноса данных, что дает пользователю лучшее представление о том, сколько времени им осталось ждать.
В зависимости от объема данных, о которых мы говорим, вы можете быть удивлены тем, насколько быстро Core Data и SQLite могут выполнять такие действия ... Ключ заключается в том, чтобы информировать пользователя, делать это в минимальном объеме. время возможно, и если ваш дизайн приложения поддерживает это, сделайте это в фоновом режиме. Обязательно выполняйте работу вне основного потока, чтобы интерфейс реагировал.
Веселись!