2011-06-30 5 views
1

私は、その情報を保持するコアデータデータベースを持つアプリケーションを持っています。 明らかに、アプリケーションのデータを管理するmanagedObjectModelpersistentStoreCoordinatorがあります。CoreDataデータベースの一部をエクスポートする

別のファイル/ストア(別のコーディネータ経由)としてエクスポートして、同じアプリケーションを使用して誰かに送信/電子メールを送信し、その内容にマージすることができますか?

明らかに、マージ部分にはスティッキーな可能性がありますが、私はその準備ができています。他に誰かが指針、提案、トリック、トラップ、ベストプラクティスに関する経験を持っていますか?

答えて

1

これはデータベースレベルでは行わないでください。コアデータのデータベースは実装上の問題に過ぎず、今後変更される可能性があり、データベースに直接頼るべきではありません。その代わりに、共有するオブジェクト(データベース項目ではないオブジェクト)を取り出し、JSONやNSCoderなどの送信フォーマットにシリアル化し、受信側でデコードします。

+0

このような、そして任意のステートメント - コアデータをストレージとして使用する多くのドキュメントベースのアプリケーションがあります。データベース・フォーマットは、バージョン管理されているデータ・モデルより頻繁に変更されることはありません。 NSCoderでエンコードされたファイルは、コアデータとしてのバージョニングの問題の影響を受けやすくなります。言うまでもなく...(iOS 5.0 NDAコメントはこちら) – bshirley

0

任意の数または永続的なストアとモデルを1つのコンテキストで一緒にメッシュ処理できます。唯一の大きな制限は、(1)異なるモデルで同じ名前のエンティティを持つことができず、(2)店舗間で関係を形成できないことです。

あなたのケースでは、おそらく1つのモデルと2つの店舗を使用します。構成プロパティを使用して、異なる店舗に異なるエンティティを割り当てます(ドキュメントを参照してください)。実際のアプリケーションデータを保持する「メイン」構成を作成し、次にエクスポートを処理する「エクスポート」構成を作成することをお勧めします。エクスポート設定のエンティティは、メインエンティティのサブエンティティである必要があります。そうすれば、彼らは主体のすべての属性と関係を継承します。メイン・コンフィギュレーションをメイン・ストアに、エクスポート・コンフィギュレーションをエクスポート・ファイルに割り当てます。

データをエクスポートする場合は、エクスポートエンティティにメインエンティティを複製してエクスポート永続ストアに保存します。データをインポートするには、プロセスを逆にします。

関連する問題