我的模型中有以下关系。 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?
最佳答案
您只需要更改这些代码行的顺序即可:
[[ASHCoreDataStack defaultStack].managedObjectContext deleteObject:self.mainUserStatementModel.levelupStatement];
self.mainUserStatementModel.levelupStatement = nil;
self.mainUserStatementModel.levelupTerm = nil;
实际上,如果将
parentStatement
关系设置为'Nullify',那么您就不需要第二行:CoreData将自动淘汰levelUpStatement
。在数据模型检查器中检查关系:关于ios - 删除在coredata中具有递归关系的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27326511/