我的模特中有以下关系。 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?
答案 0 :(得分:2)
您只需要更改这些代码行的顺序:
[[ASHCoreDataStack defaultStack].managedObjectContext deleteObject:self.mainUserStatementModel.levelupStatement];
self.mainUserStatementModel.levelupStatement = nil;
self.mainUserStatementModel.levelupTerm = nil;
事实上,如果您的parentStatement
关系设置为' Nullify'然后你不需要这些行中的第二行:CoreData会自动将levelUpStatement
取消。检查数据模型检查器中的关系: