私は、かなり標準的なセットアップであると想定しています。1つのスクラッチパッドMOCは決して保存されず(Webからダウンロードされたオブジェクトの束を含む)、もう1つの永続的なMOCはオブジェクトを永続化します。ユーザーがscratchMOCからオブジェクトを選択してライブラリに追加する場合、1)オブジェクトをscratchMOCから削除してpermanentMOCに挿入するか、2)オブジェクトをpermanentMOCにコピーします。Core Data FAQには、次のようなオブジェクトをコピーできると書かれています。
NSManagedObjectID *objectID = [managedObject objectID];
NSManagedObject *copy = [context2 objectWithID:objectID];
(この場合、context2はpermanentMOCになります。)ただし、これを行うと、コピーされたオブジェクトに障害が発生します。データは最初は未解決です。後で解決されると、すべての値がnilになります。元のmanagedObjectのデータ(属性または関係)は、実際にはコピーまたは参照されません。したがって、このobjectWithID:メソッドを使用することと、insertNewObjectForEntityForName:を使用して完全に新しいオブジェクトをpermanentMOCに挿入することの違いはわかりません。
パーマネントMOCで新しいオブジェクトを作成し、古いオブジェクトから各キーと値のペアを手動でコピーできることはわかっていますが、そのソリューションにはあまり満足していません。(私はこの問題を抱えているさまざまな管理対象オブジェクトをいくつか持っているので、コピーを作成して更新する必要はありません。開発を続けるにつれて、それらすべてのメソッドを作成します。)より良い方法はありますか?