为什么在删除核心数据中的对象之前需要删除关系?

时间:2013-01-10 00:35:32

标签: ios core-data

我有一个程序,我正在使用CoreData来管理永久和临时数据。

在一个实例中,当用户按下取消时,我通过删除对象来中止添加一些数据。但是当我点击下一个视图时,数据仍然存在,附加到它的父核心数据对象。

    [self.bar removeFoosObject:self.foo];//Why do I need this line?
    [self.foo.managedObjectContext deleteObject:self.foo];

我最终通过手动从父对象中删除子对象来解决这个问题 - 但这不是核心数据自动处理的东西吗?我为什么需要第一行?

我运行了一些测试代码,并且Foo肯定被删除了 - 它正在修复的代码让我检查,并且它的MOC已设置为nil。记忆存在,但它应该非常非常死...

1 个答案:

答案 0 :(得分:1)

您必须手动执行此操作,因为您的删除规则设置错误。请查看以下Apple文档中的关系删除规则。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html

或者也可能是在父对象和子对象之间没有将关系设置为可选。

在删除对象后,您应该保存数据库以使其同步。