代码之家  ›  专栏  ›  技术社区  ›  Jane Sales

CoreData—为自动维护关系做了多少工作

  •  0
  • Jane Sales  · 技术社区  · 16 年前

    tail和owningDog都由CoreData生成为retain属性。

    1. 删除狗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];
    }
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   Barry Wark    16 年前

    对 -graft 这就足够了。核心数据在生活中的真正目的是根据托管对象模型提供的描述维护对象实例集合的对象图。如果将关系声明为一对一,则分配(在本例中) A.tail.owningDog=B