2011-01-18 13 views
1

iOS 2.0で私のアプリケーションを作成しました。最初はCライブラリを直接使っていました。それから私はFMDBを使いました(ずっと簡単です)。しかし、今日、データのフォールト、キャッシュ、プリフェッチを管理するのは面倒です。私は、CoreDataを使用することで、アプリケーションのレスポンスが向上し、軽量化されることを確信しています(メモリワイズ)。アプリケーションをsqlite(fmdbを使用)からCoreDataに移行するにはどうすればよいですか?

私はCDですべてをやり直すために長い時間をかけて準備を進めていますが、既存のデータを移行する必要があります。私は、新しいオブジェクト(CDTrack、CDTrackPoint、CDSegmentなど)で新しいモデルを作成し、Track、TrackPoint Segmentなどのオブジェクトにある既存のデータをこの新しいストアに移動することを検討しました。しかし、それは本当に賢明な考えですか?古いグラフを一つずつ複製するよりも良い方法がありますか?

+0

あなたはユーザーデータを移行しようとしているデータですか、またはアプリケーションに付属している事前入力済みの静的データですか? – Hunter

+0

これはユーザーデータです。そのため、実行中のアプリケーションで実際に移行する必要があります。私の静的なデータであれば、私は慎重ではないでしょう:スクラッチ削除の再開。 –

答えて

2

あなたは基本的に正しい軌道に乗っています。

おそらく、データを移行する必要がある場合、アプリケーションの起動時に実行される移行用のNSOperationを作成することです。

アプリケーションによっては、通知を使用してメインスレッドNSManagedObjectContextと通信するバックグラウンドで(コアデータスレッディングルールに注意してください)実行することができます。

このデータを移行しないとアプリケーションが意味をなさない場合は、データが移行されている間に進行状況インジケータが表示されるモーダルビューを表示して、ユーザーがどれくらい待っているかをユーザーにわかりやすく伝えます。

どのくらいのデータについて話しているのかによって、コアデータとSQLiteがこのようなことをどれほど迅速に行うことができるかに驚くかもしれません...キーは最小限の量でユーザーに情報を伝えることですあなたのアプリケーション設計がそれをサポートしている場合は、バックグラウンドで実行してください。メインスレッドから作業を取り除いて、UIを応答可能にしておきます。

は、お楽しみに!

+0

私は自分のことを言う前に、自分のことをやってみた。私は止まった。私が計画していたものを正確にやるようアドバイスしてくれたので、私はトラックから完全に離れていないと考えます;-) –

関連する問題