2016-03-06 84 views
2

核心數據的初學者在這裏,核心數據中有一些非常基本的東西,我不明白。我知道刪除規則,例如,如果我的對象被刪除,如果它具有級聯關係,那麼這些關係也會被刪除。但是更新會發生什麼?核心數據在更新時應用刪除規則

例如: 人與汽車有關係。刪除規則是級聯的。 Person - > Car 如果Person被刪除,Car也會不見了。 但是現在如果Person剛剛指向另一輛車,那麼前一輛車將不會被刪除,並且只會在數據庫中晃來晃去。 對此的任何解決方案?

我覺得理想情況下,您應該在設置新車之前刪除第一輛車,但這是通過服務器獲取自動完成的。

+0

我在類似的情況下做的是在更新後獲取遺棄的對象,並刪除每一個。級聯刪除是爲了讓您的工作在申請時更輕鬆,但正如您發現的那樣,它們只會在刪除時觸發。 – Avi

回答

1

如果在所有情況下這都是您想要的行爲,那麼您可以重寫託管對象子類方法來設置新關係。在該方法中,首先檢查是否存在另一個對象,並在需要時刪除它。

E.g.

-(void) setCar:(Car *)car { 
    if (Car* oldCar = self.car) { 
     [self.managedObjectContext deleteObject:oldCar]; 
    } 
    [self willChangeValueForKey:@"car"]; 
    [self setPrimitiveValue:car forKey:@"car"]; 
    [self didChangeValueForKey:@"car"]; 
} 
相關問題