たとえば、次のエンティティがあるとします。
- 人
- 家
- 車
また、人は多くの家や車を持つことができますが、車や家には所有者が 1 人しかいません。
ここで、次のシナリオを検討してください。
- 3 つの家と 3 つの車とともに、人をコンテキストに挿入します。これらの家と車のうち、1 つの家と 1 つの車にはすでに所有者がいます。
- そして、残った家屋2台と車2台のうち、1人だけ入れた人に1台ずつ追加。
- この時点でコンテキストを保存すると、context.insertedObjects に 3 つの家と 3 つの車が反映されます。しかし、私は、私がハンドルを持っている1人を通して到達可能なオブジェクトのみを保存したいと考えています(以前の所有者の家と車の場合、その所有者はおそらく過失であり、私はそれを取得したことはありません. )
確かに、保存する前にこれらのオブジェクトを手動で削除できますが、特定のオブジェクトからのオブジェクトの到達可能性を考慮して、一般化されたソリューションを考え出すことができるかどうか疑問に思っています.
基本的に(疑似コード)の行に沿ったもの:
for (NSManagedObject *obj in context.registeredObjects) {
if (Person does not reach obj in any relationship ) {
[context deleteObject:obj];
}
}
一般化されたソリューションとは、関係と特定のエンティティの知識を必要としないものを意味します (家と車ごとに人の家と車の関係を反復しないようにするため)。