0

File Manager を使用して sqlite ファイルのコピーを作成したり、Persistent Store Coordinator の migratePersistentStore メソッドを使用したりせずに、Core Data データベースのバックアップ コピーを作成したいと考えています (ここで説明するには長すぎるため)。私がやりたいことは、元のファイルと同じ MOMD で新しい永続ストアを開き、新しい管理対象オブジェクト コンテキストを作成してから、データベース内のすべてのオブジェクトを反復処理して、それらを新しいコンテキストに挿入することです。

これは単純なエンティティに対しては機能しますが、問題は、私のモデルには約 20 のエンティティがあり、その多くが 1 対多および多対多の関係を持つことです。少し複雑な解決策は、すべてのオブジェクトを新しい MOC に挿入し、すべての新しい管理対象オブジェクトをメモリに保持し、それらを使用して後続のパスでオブジェクト間のすべての関係を結びつけることです。しかし、それは本当に厄介な解決策のようです。

これを達成するためのクリーンでエレガントな方法はありますか?それは、自分のモデル用にカスタマイズされたソリューションだけでなく、すべてのオブジェクトを同時にメモリに保持する必要なく、あらゆる種類のデータ モデルで機能する可能性がありますか?

ありがとう。

4

1 に答える 1

0

永続ストアをコピーすることは、これを行うための最も簡単な方法です。それに対する理由を再検討するか、その理由を説明することをお勧めします。

オブジェクトをあるコンテキストから別のコンテキストに (あるディスク上の永続ストアから別の永続ストアに) コピーすると、それらすべてが同時にメモリに保持されるとは限りません。Core Data はそれらを障害に変える可能性があります。

于 2012-12-05T19:25:48.950 に答える