2012-02-19 15 views
0

私は、サンドボックスのあるiOSアプリケーションから別のiOSアプリケーションにユーザーデータをアップグレードするための滑らかな方法を見てきました。デスティネーションアプリは特別なURLハンドラとして登録され、起点アプリはファイル全体をbase64エンコードし、それをプレーンテキスト文字列として特殊なURLに送ります。これは、デスティネーションアプリがデコードしてファイルシステムに保存します。 データストリームを管理オブジェクトコンテキストに読み込む

はそれが&が&は先が にそれがオブジェクトコンテキストを管理していますことを解析していることを送る起源の管理対象オブジェクトコンテキストをエンコードすることは可能ですか?つまり、宛先データを上書きする代わりに、受信データをマージしますか?この質問への答えは、「あなたが入ってくるデータで何でもできますか?

編集:私は使用していないが、使用を計画してい

は、データをテキスト・ツー・URL・ツー・URL・ハンドラ・ツー・データ方式hereを議論しました。これがうまくいくと仮定すると、私の質問は、宛先が宛先管理対象オブジェクトコンテキストに挿入する管理対象オブジェクトとしてデータを解析できるかどうかです。起点と目的地は同じ管理オブジェクトモデルを持ちます。

+0

いいえ、あなたがそのようなアプリケーションインスタンス間でメモリを共有することはできません。 –

答えて

0

.sqliteファイル全体の内容を送信すると、実行しようとしていることがあります。ターゲット先のアプリケーションに、対象のサンドボックスに保存されたファイルのコアデータスタック全体(つまり、NSPersistentObjectStoreCoordinator)を作成させる必要があります。あなたは2つのスタックがすでにあなたとNSManagedObjectModelを作成した(同じURLを指して、その後[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]によってでNSPersistentStoreCoordinatorをinit'edしている場合NSManagedObjectID sが好ましい。

+0

転送されたデータを宛先の永続ストアに保存してから宛先の管理オブジェクトコンテキストにプルしてから、そのマージしたコンテキストを保存すると、私はそれを取り除くことができます。 – Thompson

+0

はい、私はそれを "新しい.sqliteファイルに転送したデータを保存してから、それを指す完全に新しいNSPersistentStoreCoordinatorを構築します。*その後*この新しいNSPersistentStoreCoordinatorを使用する新しいNSManagedObjectContextを作成します" :) –

+0

これまでのところとても良いです。私は2つのオブジェクト・コンテキストを持っています。どちらも同じオブジェクト・モデルを使用していますが、それぞれは独自の永続ストアを使用しています。あるコンテキストから別のコンテキストにデータを追加したいのですが、属性にはリレーションシップがあります。リレーションシップはオブジェクトごとにオブジェクトを追加しようとすると店舗間の関係になります。リレーションシップを持たない新しいモデルで第3コンテキストを作成しますが、リレーションシップにIDのセットを保持する属性はありますか? – Thompson

関連する問題