我的模型中有以下关系。 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/

10-10 08:41