2012-08-16 81 views
2

我有一個工作正常的核心數據應用程序。我現在試圖將刪除規則添加到幾個關係中 實體1具有一組實體2核心數據 - 拒絕刪除規則導致錯誤

如果實體1被刪除並且它具有一些實體2對象,則拒絕刪除,否則允許。 實體兩者可以不用擔心實體1

我有實體1組的關係,拒絕,和實體2的組以抵消

試圖刪除實體1 當我目前得到一個錯誤被刪除[quote] Unresolved error Error Domain = NSCocoaErrorDomain Code = 1600「The operation could not be completed。(Cocoa error 1600.)」UserInfo = 0x1e882f40 {NSValidationErrorObject =(entity:Factory; id:0x1dda43e0 [/ quote]

我是否必須做點別的才能讓它工作

回答

6

拒絕規則不會按照您的預期工作。從Apple的文檔:

如果規則是拒絕,那麼在刪除對象之前,必須從關係中刪除目標對象或對象,否則保存時會出現驗證錯誤。

不幸的是,拒絕規則並不妨礙刪除,但會導致驗證錯誤。所以你應該在刪除之前手動檢查關係是否爲空。

+0

會很好,如果你給文檔的URL – Shamsiddin 2016-02-16 08:14:28

+0

因此,拒絕刪除規則應該被視爲更多的安全網,不會讓你刪除你不想刪除的數據? – 2017-04-20 05:42:48

2
  • 一個拒絕刪除規則實際上是從實體1至實體2
  • 的關係,你已經刪除了一個實體對象1
  • :當以下條件爲真,則您將產生一個1600錯誤
  • 有一個相關的對象在Entity1.entity2
  • 您嘗試保存上下文持久性存儲

之前執行實體1 obj的缺失等你應該檢查Entity1.entity2是否爲空。如果不是的話,做的這些選項之一:

  • 跳過刪除的實體1的對象,或者,
  • 無出Entity1.entity2對象,然後刪除該實體1對象
+1

是否有另一種方法比使用1600作爲幻數? – 2013-10-19 22:06:25

+0

發現它,NSValidationRelationshipDeniedDeleteError – 2013-10-19 22:09:33

0

我刪除了detail對象後,發生了錯誤,該對象的nullify規則與它的關係爲master。同時,masterdetails的關係有cascade規則。我將detail的規則從nullify更改爲no action後,該錯誤消失。

它對我來說仍然很奇怪。無法理解錯誤的原因。

相關問題