2014-12-05 61 views
1

我在模型中具有以下關係。 UserStatement具有levelupStatement和parentStatement,它們之間具有一對一的關係。我遇到的問題是當我嘗試刪除levelupStatement時。我有抵消的關係的兩端,當我嘗試刪除象下面這樣:(mainuserstatement是parentStatement)刪除在coredata中具有遞歸關係的記錄

self.mainUserStatementModel.levelupStatement = nil; 
self.mainUserStatementModel.levelupTerm = nil; 
[[ASHCoreDataStack defaultStack].managedObjectContext deleteObject:self.mainUserStatementModel.levelupStatement]; 

The error I am getting is: 
     Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-deleteObject: requires a non-nil argument'. 

我知道我的存在managedObjectContext。所以問題不應該在那裏。如何在不影響levelupterm和parentStatement的情況下安全地刪除levelupStatement?

core data model

回答

2

你只需要改變這些代碼行的順序:

[[ASHCoreDataStack defaultStack].managedObjectContext deleteObject:self.mainUserStatementModel.levelupStatement]; 
self.mainUserStatementModel.levelupStatement = nil; 
self.mainUserStatementModel.levelupTerm = nil; 

事實上,如果你parentStatement關係設置爲「廢止」,那麼你不需要第二這些行:CoreData將自動清零levelUpStatement。檢查Data Model Inspector中的關係:

enter image description here