0
我不知道自己是否做得太多,可能更依赖CoreData。假设我有两个托管对象Dog和Tail,它们具有一对一的关系。狗有一个关系,尾巴,这是可选的。它的反面是拥有狗。 Dog to Tail的删除规则是级联的。尾巴拥有狗关系也是可选的。其删除规则是无效的。CoreData - 自动维护关系需要多少工作
通过CoreData生成tail和owning Dog作为保留属性。
我需要做什么,最低限度地完成以下任务?
- 移动狗一个尾巴X到狗乙
- 删除狗A(不删除狗B的新尾巴X)。
我一直在做这样的事情,写的全为清楚起见
-(void)graftThenKill
{
Tail* tempTail = A.tail;
A.tail = nil; // releases X, sets relationship to nil so we can delete without cascading
B.tail = tempTail; // retains X, sets Tail's owningDog to B
[moc deleteObject:A]; // now we have his tail, don't need A
}
我能与
-(void)graft
{
A.tail.owningDog = B; // Makes A's tail nil, safe to delete A without deleting X?
[moc deleteObject:A];
}