2009-10-21 62 views
4

我有一個與另外兩個實體(例如Department和Team)相關的管理對象模型中的實體(例如Employee)。這兩種關係都是一對多關係(即員工必須有一個部門和一個團隊,團隊和部門有很多員工)。這兩者可能重疊也可能不重疊(例如,一個團隊可能由HR的員工組成,會計& I.T.或者可能由一個部門的若干員工組成)。從陣列控制器中刪除實體時如何刪除實體?

Department <-->> Employee <<--> Team  

我有兩個NSArrayControllers兩個NSTableViews,一個部門表和一個團隊表提供數據。員工可以在部門之間和團隊之間進行移動,但我不知道如何刪除(激發)員工。

如果我向陣列控制器中的任何一個發送刪除消息,員工將被從團隊中取出(例如),但留在部門中並且對象圖形處於不一致狀態。即使我在兩個控制器上都調用remove操作,該對象也不會被刪除 - 它是孤立的,只是處於陷阱狀態。

本來我有部門&(員工實體的)團隊關係設置爲刪除規則爲Nullify,但即使將其中一個或兩個都改爲級聯也無濟於事。

我是否需要重寫數組控制器上的remove:操作以實際刪除員工,還是缺少真正明顯的東西?

回答

9

當您使用核心數據時,NSArrayController有兩種不同的行爲。如果它被配置爲直接從託管對象上下文獲取對象,它將在刪除對象時刪除它們。

如果您將contentSet綁定到另一個控制器,就像您在這種情況下聽起來一樣,默認行爲是將該對象從關係中刪除。但是,如果要刪除它,則會出現「刪除刪除對象」綁定選項,這會生成您想要的結果。

+0

這麼簡單的事!我真的應該看看綁定選項!當然,我也必須將刪除規則從級聯更改爲無效! 謝謝亞歷克斯!我會投你的答案,但我還沒有足夠的聲望點! :) – Matthew 2009-10-21 21:54:26