はい、いいえ、「parentMOC を自動的に変更する」の定義に応じて。つまり、次に子が取得するときに、更新されたデータが取得されます。そうです。オブジェクトが自動的に変更されるという意味であれば、いいえ。その理由は、MOC はスクラッチパッドであり、変更しない限り変更されないためです。
はい、複数の場所から同じオブジェクト/関係に変更を加える場合は、マージの競合を解決する必要があります。これは複雑な問題であり、SO の回答では十分に回答できません。Core Data Programming Guide、特に変更管理のセクションをよく読む必要があります。
編集
- 子 MOC でオブジェクト A を保持していて、親 MOC で関係 B を A に追加するとします。AB にアクセスすると何が得られますか? ない?子 MOC で AB を見たい場合はどうすればよいですか? refreshObject:mergeChanges: を使用して A を更新しますか、それとも objectWithID: を使用して A を再度取得しますか? 子 MOC 全体を更新する方法はありますか? 子 MOC に非常に複雑なオブジェクト ネットワークがあり、すべてのオブジェクトを 1 つずつ更新/再取得したくない (または単にできない)。
子 MOC を通してオブジェクト A を見ると、子 MOC から再取得するまで、親 MOC の変更は表示されません。親の内容を確認したい場合は、MOC で別のフェッチを実行するか、ストアから特定のオブジェクトを取得するメソッドのいずれかを使用して確認できます。ただし、副作用がある可能性があるため、各フェッチに関するドキュメントを読む必要があることを強調しなければなりません。正確な答えは、選択したアプローチによって異なります。
通常、継続的な変更を行っている場合は、子で変更を行って親にプッシュするか、DidChange 通知を処理して変更が「自動」に見えるようにする必要があります。
- mergePolicy はここで機能しますか?
はい。
繰り返しますが、ここで SO についてあなたに提供できる最善の答えは、「コア データ プログラミング ガイド」を紹介することです。次の 2 つのセクションに特に注意してください。
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html#//apple_ref/doc/uid/TP40002484-SW1
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdChangeManagement.html#//apple_ref/doc/uid/TP30001201-CJBDBHCB