删除或删除核心数据中的托管对象

时间:2012-11-21 13:38:59

标签: ios core-data

在文档和广泛的文献中,为IOS在CoreData中删除/删除子类管理对象的生成工厂方法是

(void)removeXXXObject:(NSManagedObject *)value

其中XXX是对应的关系,或者我们可以简单地使用removeObject。

在我的代码中我使用了这个:

Data *lastData = [[self sortedPersonDatas] objectAtIndex:0];
[selectedPerson removePersonDatasObject:lastData];

其中PersonDatas是与数据管理对象的一对多关系,我从中获取了最后一个数据(lastData来自所有数据的排序数组) 但是使用前两个删除方法并检查后面的SQL数据库,我们可以发现实际数据只是存在反向关系为null。 要完全删除我必须使用的数据(所有属性和对象):

[selectedPerson.managedObjectContext deleteObject:lastData];

问题:哪种方法更好,CoreData是否保持数据完好无损?

1 个答案:

答案 0 :(得分:7)

removeXXXObject仅从多对多关系中删除对象,但不会从商店中删除该对象。为此,您必须确实使用deleteObject - 这是所需的行为。默认情况下,调用deleteObject也会将相应的关系设置为nil(请参阅https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html#//apple_ref/doc/uid/TP40001857-SW1)。