由于对我的一些代码有些怀疑,我有一个问题。在NSManagedObject的数组中,我需要摆脱其中的一些。 这是(下面)我使用的代码。在我的经验范围内,我必须说它有效。所以我的问题更多的是确保我没有做错事而不是解决现有问题
for (NSManagedObject *item in objects) {
if ([[item valueForKey:@"OK"] intValue]>1) {
[context deleteObject:item];
continue;
}
}
由于我在循环时修改数组“对象”的内容,我担心我的代码有些不安全。 当然这一切都取决于场景背后的处理方式,我不知道。
感谢。
答案 0 :(得分:1)
当您调用deleteObject:
时,您正在标记要删除的对象,而不是立即删除它,当然也不会从迭代期间迭代的集合中删除它。
来自文档:
指定在提交更改时应从其持久性存储中删除的对象。
如果在deleteObject:
调用后检查已删除的项目,您将看到对象仍然存在,但其isDeleted
标记设置为YES
。下次保存NSManagedObjectContext
时,实际上会删除该对象。
答案 1 :(得分:1)
您只是使用deleteObject
行标记要删除的项目。为了强制上下文执行删除,请在函数的底部运行:
NSError *error;
if (![context save:&error]) {
return;
}