1

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

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

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

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

我运行了一些测试代码,Foo 肯定被删除了——它搞砸的代码让我检查一下,它的 MOC 已设置为 nil。记忆是存在的,但它应该是非常非常死寂的……

4

1 回答 1

1

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

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

或者也可能是父对象和子对象之间的关系未设置为可选。

并且在您删除对象后,您应该保存数据库以同步它。

于 2013-01-10T00:44:31.300 回答