グローバル永続ストアとのコアデータドキュメントベースのアプリケーション

StackOverflow https://stackoverflow.com/questions/4213153

質問

私があるように動作し、ドキュメントベースのコアデータのアプリケーションを持っています。私はアイテムのライブラリを保持するために、グローバルな持続ストアのサポートを追加したいと思います。

私は、関連するドキュメントのほとんどを読んで、私は、管理オブジェクトモデルで構成を使用する必要があることを理解しました。 「DocumentConfiguration」と「LibraryConfiguration」:私は2つの構成を定義しました。文書構成のエンティティのみ文書構成であり、ライブラリー構成内のエンティティは、ライブラリの構成のみである - すなわち、無重複

文書は、「あなたがコーディネーターを作成するときは、このモデルを使用する」と言います。私はデフォルトNSPersistentDocumentコーディネーターを使用していますので、しかし、私は実際に私自身の永続ストアコーディネータを作成しないでください。

進み、助け、私が持っているかもしれない誤解を解消する最善の方法についていくつかの質問:

A。私はNSPersistentDocumentでNSPersistentStoreCoordinatorを取得し、その後の線に沿って、それを新しい永続ストアを追加することになります:

NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType 
    configuration:@"LibraryConfiguration" 
    URL:url 
    options:nil 
    error:&error];

私はNSPersistentDocumentが提供するデフォルトを使用していて、私はNSPersistentDocumentの永続ストアコーディネータに他の構成定義(「DocumentConfiguration」)を提供していないので、これは問題であり得ることを考えています。私は、時間がドキュメントを保存するために来たとき、それはおそらく、nilを使用する推測しています。そしてもしそうなら、これは問題でしょうか?すなわち、どのように同一の構成は、すべての永続ストア(この場合は2で)のために定義されていない場合は、永続ストアが与えられた構成定義とエンティティを保存するコーディネータ知っているだろうか?それが作成されている前/保存NSPersistentDocumentの永続ストアの(「DocumentConfiguration」への)コンフィギュレーションを設定することができアムI? NSPersistentDocumentのドキュメントから:

  新しい文書を保存すると、選択したURLをデフォルトタイプの店舗を追加し、呼び出すには、保存:文脈に。既存の文書の場合は、単に呼び出す保存保存:コンテキストに

B。それはよりよい古いものを、私自身のNSPersistentStoreCoordinatorとNSManagedObjectContextインスタンスを作成する定義された構成で2つの永続ストアを追加し、その後NSPersistentDocumentはこれらNSPersistentStoreCoordinatorとNSManagedObjectContextインスタンスを使用します、そして解放するだろうか?もしそうなら、どのように私はaddPersistentStoreWithTypeためNSPersistentDocumentのURLを指定します:...方法を?無題のドキュメントが保存されていたら、このURLが唯一知られているようです。 (テストこれは、ドキュメントが最初に保存されるまで、永続ストアコーディネータのメソッドpersistentStores)を経由して(一時的な永続ストアがあるように表示されません)。

C。それとも、私が永続的なライブラリストアと管理ライブラリオブジェクトモデル専用に使用していることだけではNSPersistentDocumentを残し、そして私自身のNSPersistentStoreCoordinatorインスタンスを作成する方がよいでしょうか?ドキュメントはNSPersistentStoreCoordinatorの複数のインスタンスがマルチスレッドコアデータ・アプリケーションで使用されるべきであると言うが、私は、マルチスレッドコアデータのサポートを必要としません。 2つのNSPersistentStoreCoordinatorのインスタンスを持っていることが望ましい - ?(直感は正しいアプローチ、これは必要ではないことを言うと、おそらくない)ライブラリ用と文書のための1つを

任意の提案ですか?

役に立ちましたか?

解決

はうまく機能Iが使用される溶液は、上記)Cに基づいています。私はNSPersistentDocumentを残して、それだけでは、永続ストアコーディネータだし、代わりに私が永続図書館店(グローバルストア)専用に使用することを私自身のNSPersistentStoreCoordinatorインスタンスを作成します。

は私はこの後永続ストアコーディネータ(例えば、「LibraryConfiguration」)に関連付けられた複数の店舗を持たせたい場合にはカスタム値をストアするための構成を設定することができます。ライブラリストアがNSPersistentDocumentの永続ストアコーディネータから永続ストアコーディネータ異なるによって管理されているので、私はNSPersistentDocumentの永続ストアの構成を指定する心配する必要はありません。

他のヒント

あなたは、構成ごとに個別の永続ストアを作成する必要があります。それはあなたが別の永続的なファイルに同じデータモデル内のさまざまなエンティティを保存できるようにするために、ためにあるかの設定です。

ここでよくある間違いは、永続ストアコーディネータは永続ストアの任意の番号を持つことができることを忘れています。あなたがやらなければならないことは、異なる設定名と異なる名前および/または場所とそれぞれに2つの永続ストアを作成作成するために、アップルの定型を複製です。そして、永続ストアコーディネータの両方に追加します。

そして、あなたが行われています。各構成のエンティティインスタンスは、右の店に入ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top