NSManagedObject删除不起作用,仍然可以检索该对象

时间:2011-09-26 14:15:11

标签: iphone objective-c core-data

我正在尝试删除托管对象,是否有我遗漏的内容?

[managedObjectContext deleteObject:managedObject];

NSError *error;

if (![self.managedObjectContext save:&error]) {
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
    return NO;
}

return YES;

当我运行此代码时,仍然可以检索该对象。

NSManagedObject *objectiveManagedObject = [managedObjectContext objectWithID:objectID];

return (ObjectiveManagedObject *)objectiveManagedObject; 

4 个答案:

答案 0 :(得分:0)

如果你这样做会怎样?

[[self managedObjectContext] setPropagatesDeletesAtEndOfEvent:NO]

第一

答案 1 :(得分:0)

我注意到您已在self.managedObjectContextmanagedObjectContext之间切换。你确定这些是同一个变量吗?避免直接访问您的ivars;使用访问者(initdealloc除外)。这可以避免各种各样的问题。

您确定managedObject的ID为objectID吗?它们可能是两个看似相似的物体。

答案 2 :(得分:0)

上下文未正确保存

答案 3 :(得分:0)

鉴于之前的答案没有检出,我想说最可能的解释是托管对象是所需关系中的最后一个对象。因此,在删除关系另一端的对象或将第二个对象添加到关系中之前,不能删除它。

您可能还想检查持久性存储未设置为只读。我不记得你在尝试编写只读存储时遇到的错误。

此外,您可能需要等待几秒钟才能测试该对象。保存是磁盘操作,因此相对较慢。保存实际上可能失败。

在任何情况下,您都应该从保存中捕获错误返回。