2014-12-05 43 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