我正在尝试删除托管对象,是否有我遗漏的内容?
[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;
答案 0 :(得分:0)
如果你这样做会怎样?
[[self managedObjectContext] setPropagatesDeletesAtEndOfEvent:NO]
第一
答案 1 :(得分:0)
我注意到您已在self.managedObjectContext
和managedObjectContext
之间切换。你确定这些是同一个变量吗?避免直接访问您的ivars;使用访问者(init
和dealloc
除外)。这可以避免各种各样的问题。
您确定managedObject
的ID为objectID
吗?它们可能是两个看似相似的物体。
答案 2 :(得分:0)
上下文未正确保存
答案 3 :(得分:0)
鉴于之前的答案没有检出,我想说最可能的解释是托管对象是所需关系中的最后一个对象。因此,在删除关系另一端的对象或将第二个对象添加到关系中之前,不能删除它。
您可能还想检查持久性存储未设置为只读。我不记得你在尝试编写只读存储时遇到的错误。
此外,您可能需要等待几秒钟才能测试该对象。保存是磁盘操作,因此相对较慢。保存实际上可能失败。
在任何情况下,您都应该从保存中捕获错误返回。