2016-08-21 174 views
0

假設我有兩個名爲Book和Publisher的實體 1. Book有屬性: - writer,title。 2.出版商擁有的屬性: - 名稱,類型 我設置的關係: - 出版商在圖書(一對多並將其設置爲反比關係)CoreData關係混淆

選中我可以在DataModal檢查員看到關係的行稱爲刪除規則有三個選項1.廢止2級聯3.拒絕

這是什麼意思,我想刪除發佈者實體只有當我刪除的最後一本書

預先感謝您。 我只是一個初學者 :)

回答

1

的文檔做好解釋這些刪除規則

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/HowManagedObjectsarerelated.html

關係刪除規則

的關係的刪除規則指定應該發生什麼如果 嘗試刪除源對象。請注意如果嘗試進行 的措辭。如果關係的刪除規則設置爲拒絕,則可能是 源對象不會被刪除。再考慮一下 部門的員工關係,以及不同的 刪除規則的影響。

拒絕如果關係目標 (員工)中至少有一個對象,請不要刪除源對象(部門)。

例如,如果你想刪除一個部門,你必須確保 該部門的所有員工首先被轉移到別處 (或被解僱!);否則,該部門不能被刪除。

抵消刪除對象之間的關係,但不刪除 任一對象。

僅當員工 的部門關係是可選的,或者您確保在下一次保存操作之前爲員工的每個 設置一個新部門時,這纔有意義。

在級聯時 刪除源關係的目標刪除的對象。

例如,如果你刪除一個部門,解僱所有員工 同時該部門。

無措施對 關係的目的地處的對象不做任何事情。

例如,如果您刪除某個部門,請將所有員工都留爲 ,即使他們仍然認爲他們屬於該部門。

應該清楚的是,這些規則的前三個在 不同的情況下是有用的。對於任何給定的關係,取決於業務邏輯,由您決定選擇哪一個最合適。 這是不太明顯的爲什麼無動作規則可能會被使用,因爲如果您使用 ,可能會使對象圖保持在 不一致的狀態(員工與已刪除的 部門有關係)。

如果使用「無操作」規則,則由您來確保維護對象圖的一致性。您有責任將 設置爲與有意義值相反的關係。這可能是 受益於您有多對多關係的情況,並且 可能是目標上的大量對象。