Как лучше всего перенести приложение из sqlite (используя fmdb) в CoreData?
Я создал свое приложение с iOS 2.0, сначала используя библиотеку C напрямую. Затем я перешел к использованию FMDB (намного проще для меня). Но сегодня стало слишком сложно управлять ошибками, кэшированием и предварительной выборкой данных. Я уверен, что использование CoreData сделает приложение более отзывчивым и легким (с точки зрения памяти).
Я готов пройти долгий и тяжелый труд, переделывая все на CD, но мне нужно перенести существующие данные. Я рассмотрел создание новой модели с новыми объектами (CDTrack, CDTrackPoint, CDSegment и т. Д.), А затем переместил существующие данные, которые находятся в таких объектах, как Track, TrackPoint Segment, в это новое хранилище. Но действительно ли это мудрая идея? Есть ли лучшие способы сделать это, чем дублировать старый граф один за другим?
1 ответ
Вы в основном на правильном пути.
Вероятно, я бы создал NSOperation для миграции, которая запускается при запуске приложения, если необходимо перенести данные.
В зависимости от вашего приложения, эта операция может выполняться в фоновом режиме (помните о правилах многопоточности Core Data!), Взаимодействуя с основным потоком NSManagedObjectContext с помощью уведомлений.
Если ваше приложение не имеет смысла без переноса этих данных, возможно, вы создали модальное представление с индикатором прогресса во время переноса данных, что дает пользователю лучшее представление о том, сколько времени им осталось ждать.
В зависимости от объема данных, о которых мы говорим, вы можете быть удивлены тем, насколько быстро Core Data и SQLite могут делать подобные вещи. Главное - информировать пользователя, делать это за минимально возможное время и если ваш дизайн приложения поддерживает это, сделайте это в фоновом режиме. Обязательно выполняйте работу вне основного потока, чтобы интерфейс реагировал.
Повеселись!