2009-07-24 12 views
1

私はNSPersistantDocumentを私のアプリケーションでコアデータに基づいて使用しています。コアデータドキュメントにドキュメント固有の設定を保存する最も良い方法は何ですか?

各ドキュメントには、そのドキュメントにのみ関連する多数の設定があります。たとえば、ドキュメントを後で更新するために、アドレス帳グループの一意のIDを保持する必要があります。

私がこれに近づくことを考えているのは別のモデルDocumentSettingを持つことです。これには2つの属性があります。キーと値は、NSStringの値を保持します。

理想的にはNSUserDefaultsに似ていますが、文書内に保存したいと思います。

誰もこれまでに行ったことはありますか?これにアプローチする方法はありますか?

答えて

4

NSPersistentStoreのsetMetadata:メソッドを使用して、ドキュメントごとの設定を保存できます。ストアのメタデータを使用する方法については、hereを参照してください。しかし、ドキュメントでアドバイスされているように、そこに置くことができるものにはいくつかのサイズ制限があります。いくつかのキーと値のペアよりも大きなものを格納する必要がある場合は、そのようなデータを格納するためにデータモデル内に新しいエンティティを作成することをお勧めします。

2

ブライアン氏によれば、永続ストアのメタデータはこの種のものに適しています。また、別のエンティティの作業を追加するという考え方もあります(私はこれまで両方の方法を使用してきました)。このDocumentSettingエンティティがドキュメントモデル内の他のエンティティとの関係を持たない場合は、それを別のxcdatamodelに配置し、実行時に-[NSManagedObjectModel mergedModelFromBundles:]を使用してモデルをマージすることができます。少なくともこの方法では、あなたの "ソース"モデルファイルを少しだけ分離しておくことができます。

戦略上、これらのドキュメント設定が非常に多く、個別にクエリする必要がない場合は、変形可能なプロパティを使用してDocumentSettingsエンティティに(アーカイブされた)NSDictionaryを格納できます。これは、基本的に辞書のような感じのNSUserDefaults APIのような感じになります。

関連する問題