2011-01-02 7 views
0

コアデータドキュメントベースのアプリケーションがあります。私のモデルの一部は、DeviceTypeテーブルと、それらの間の関係を持つDevicesテーブルを持つことによって機能します。私のアプリケーションでは、各ファイルとは別にDeviceTypesのリストを保存し、後でそれをサーバに同期させることができるようにしたいと考えています。新しいファイルにNSManagedObjectのデフォルトインスタンスを格納する

これを達成するにはどうすればよいでしょうか?

おかげで、あなたはコアデータとデータベース用語の多くを使用している ゲイブ

答えて

0

。あなたはできるだけ早くその習慣を破るべきです(理由はCore Data Programming Guideの入門の段落で与えられています)。

あなたの「通常静的」デバイスリストは、新しいデバイスが出てきたときに更新できるものと思われますか?実際には、リストをPLISTリソースとしてアプリケーションバンドルに保存しておき、新しいデバイスが出たとき(簡単にするために)アプリにアップデートをプッシュすることをおすすめします。辞書ベースのPLISTを使用すると、キーはデバイスIDになり、そのキーは管理オブジェクトの単純な文字列属性になります。いくつかのIDに基づいてコアデータモデルの外にあるものを見ることは、全く合理的です。

に更新する必要がある場合は、アプリケーションに「既定」リストを追加します(上記を参照)。ただし、ドキュメントフォルダに「.devicelist」(または何でも)ファイルがある場合は代わりに使用してください。そうすれば、更新されたリストが定期的にチェックされ、異なる場合はdocsフォルダにダウンロードすることができます。

私が誤解したことがある場合は、質問を編集したりコメントを投稿したりすることでどちらかを明確にすることをおすすめします。

+0

これは非常に役に立ちます。私はおそらくあまりにも多くのデータベース用語を使用していることを知っている、私はMySQL、SQLiteを長年使用しており、これはコアデータへの私の最初の真の飛躍です。私は、それぞれのDeviceエンティティに強力なObjective-Cオブジェクトを指し示す "type"プロパティがあり、UIのコアデータバインディングを使用してデバイスを追加/編集することができるという "利便性"を探していたと思います。各デバイスはオーディオ機器なので、ユーザーが頻繁にワークスペースに追加するのは一般的ではないと思います。 PLISTファイルをネイティブオブジェクトに接続できますか? – grivescorbett

+0

「接続されている」という意味に依存します。 PLISTファイルには、読み込んだ永続化されたCocoaコンテナ(NSDictionaryまたはNSArray)が含まれています(dictまたは配列を生成します)。すべての管理対象オブジェクトの属性が格納されているのが本質的にルックアップコードであれば、とにかくそれを変換することになります([deviceManager deviceInstanceForID:[myManagedObject valueForKey:@ "deviceID"]]))。それ以外の場合は、コアデータを使用して完了します。起動時にリストが作成されていない場合は、いつでも作成することができます。 –

+0

ああ、以前はPLISTファイルを使ったことがありませんでした。ありがとうございました! – grivescorbett

関連する問題