2012-04-13 86 views
0

我有一個核心數據生成的類'item'。它具有「類型」的屬性,這是另一類。刪除之後瞭解核心數據並保存NSManagedObjectContext

我定製了'setType',以便進行其他一些處理 - 例如我更新'dateTypeLastSet'。到目前爲止,這工作得很好。

但是,由於某些原因,當我刪除該項目時也會發生這種附加處理。具體來說,直到我在NSManagedObjectContext上調用'save'時纔會發生。

這是因爲刪除會導致自動調用'setType:nil'?記錄參數顯示NULL是嘗試分配。

這對我來說會有問題,因爲在我的附加處理代碼中,我執行了一些計算。假設我在那裏存儲了一些「設置了一個項目類型的次數」的計數器。我不希望刪除和設置爲零。但我也不能只檢查零,因爲這可能是一個合法的更新(無可能是可接受的類型)。

任何解釋或建議表示讚賞。

UPDATE

事實證明,當類型被刪除,它確實設置屬性爲nil - 我注意到,數據實體的刪除規則是默認抵消。如果改成不採取行動,我沒有這個問題。

所以現在的問題變成了 - 將刪除規則從無效更改爲其他影響?爲什麼這被視爲明智的默認?

回答

1

看來nullify是一個合理的默認值,因爲一旦'類型'不再存在,擁有一個流浪的指針可能會很危險。如果您在文檔中查找NSNoActionDeleteRule,它說:

「如果你使用這個規則,你是負責維護的對象圖中 完整性此規則是強烈反對的 所有,但高級用戶。 「。

+0

然後我只是不明白如何有可能在我的setType方法有自定義代碼,因爲它總是會在我刪除項目時被調用。 – 2012-04-13 15:00:49

+0

我想這取決於nil作爲顯式設置和nil作爲系統需要使用的值之間的差異。你可以定義一個空類型的'type'對象,並將它用於顯式的setType:? ...使用NSNull的方式? – 2012-04-13 15:07:57

+0

我可以。我猜我只是覺得很癢。 – 2012-04-13 15:26:16