Как лучше всего перенести приложение из sqlite (используя fmdb) в CoreData? - PullRequest
1 голос
/ 18 января 2011

Я создал свое приложение с iOS 2.0, сначала используя библиотеку C напрямую.Затем я перешел к использованию FMDB (намного проще для меня).Но сегодня стало слишком сложно управлять ошибками, кэшированием и предварительной выборкой данных.Я почти уверен, что использование CoreData сделает приложение более отзывчивым и легким (с точки зрения памяти).

Я готов пройти долгую и тяжелую работу, переделывая все на CD, но мне нужно перенестисуществующие данные.Я рассмотрел создание новой модели с новыми объектами (CDTrack, CDTrackPoint, CDSegment и т. Д.), А затем переместил существующие данные, которые находятся в таких объектах, как Track, TrackPoint Segment, в это новое хранилище.Но действительно ли это мудрая идея?Есть ли лучшие способы сделать это, чем дублировать старый граф один за другим?

1 Ответ

2 голосов
/ 19 января 2011

Вы в основном на правильном пути.

Вероятно, я бы создал NSOperation для миграции, которая запускается при запуске приложения, если данные должны быть перенесены.

В зависимости от вашего приложения, эта операция может выполняться в фоновом режиме (помните о правилах создания потоков в основных данных!), Взаимодействуя с основным потоком NSManagedObjectContext с помощью уведомлений.

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

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

Веселись!

...