清空核心数据NSSet(多个关系)

时间:2011-11-09 11:22:27

标签: objective-c cocoa core-data

如果我需要以编程方式清空由Core Data自动创建的NSSet(多个关系),我该怎么办?像这样的东西?

[self willChangeValueForKey:@"MyRelationship"];

[[self MyRelationship] release];
[self MyRelationship] = [NSSet alloc] init];

[self didChangeValueForKey:@"MyRelationship"];

不确定它是否正确...... 感谢

2 个答案:

答案 0 :(得分:6)

[[self mutableSetValueForKey:@"MyRelationship"] removeAllObjects];

出于某种原因,我永远无法让“级联”删除规则起作用,所以当我想删除对象时,我必须遍历集合并调用[self.managedObjectContext deleteObject:obj],否则我将得到验证错误,如果关系被定义为必需。

答案 1 :(得分:1)

帕特里克,

不出所料,关系在核心数据方面是特殊的。它们提供了一些专门的方法来从这些关系中删除对象。您应该使用这些方法,而不是尝试覆盖访问器。就像在这个片段中一样:

[self removeMyRelationship: self.myRelationship];

我还认为你应该删除被覆盖的访问器方法。

我对您的删除问题没有任何了解。我建议您只是遍历组并删除对象。我认为你的普查员必须是你的关系的副本。如以下ARC代码所示:

for (Relation *r in [self.myRelationship copy]) {

    [moc deleteObject: r];
}

安德鲁