删除coredata中具有递归关系的记录

时间:2014-12-05 23:47:08

标签: ios objective-c core-data

我的模特中有以下关系。 UserStatement具有levelupStatement和parentStatement,它们之间具有一对一的关系。我遇到的问题是当我尝试删除levelupStatement时。我已经取消了关系的两端以及当我尝试删除时如下:( mainuserstatement是parentStatement)

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

1 个答案:

答案 0 :(得分:2)

您只需要更改这些代码行的顺序:

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

事实上,如果您的parentStatement关系设置为' Nullify'然后你不需要这些行中的第二行:CoreData会自动将levelUpStatement取消。检查数据模型检查器中的关系:

enter image description here