我有什么,想:
我有一对多的关系A <--- >> B(的一对多部分被排序)。
- 当删除所有B的一个相对于应删除一样,所以对A的关系到B的删除规则设置为级联- >做工精细
- 当删除只有B的关系回到A应该被清除,所以对于B的关系A中删除规则设置为抵消- >不 (仅在延迟后) 工作
问题描述:
所以,我有相同问题在这个问题表示“核心数据抵消规则不起作用?” :我删除了关系到A并且之后,我算剩余B的数量,A有一个关系的B和它是和以前一样。 在这个问题接受的答案是因为什么不废掉是使用级联,而不是废止:
抵消设置指向空当对象被删除。 如果你有一个指针它不会删除它的阵列,它只是设置为null。
我看到2个问题与答案:
- 我敢肯定级联是在这种情况下,错误的规则,因为它也将删除B时的,这不是我想达到什么删除a。 (我试了一下还是,结果是我所期待的:一个也已删除)。
- 收集不能有null作为其内容之一,除了一个使用NSNull单。 所以我怀疑,这是抵消规则做什么。
试验了一下后,我发现,如果我删除B检查被立即删除,但相对于不立即清除,但只有一点点延迟后的一个实例:
// Method is called by pressing a button
-(void)removeLastBOfA:(A *)instanceOfA
{
// Prints 4
NSLog(@"fetch all b's count before:%d", [context fetchAllBs].count);
// Prints 4
NSLog(@"A's relation to B count before: %d", instanceOfA.relationToB.count);
[context deleteObject:[instanceOfA.relationToB lastObject]];
// Prints 3
NSLog(@"fetch all b's count after:%d", [context fetchAllBs].count);
// Prints 4, but should be 3. Last Object of A's relationToB is still the object that was deleted
NSLog(@"A's relation to B count after: %d", instanceOfA.relationToB.count);
}
现在按下按钮,而在其间没有做任何事情之上再次调用方法时,突然之间的关系被更新,“A对b之前计数的关系:3”被打印出来。 所以废掉删除规则不工作,因为我想它,但有一点延迟。
问题:
- 是2个问题我说有效吗?
- 为什么抵消一段时间后再更新的关系,什么是延迟? 还是在这一点做的关系得到删除NSManagedObject后更新?