我从文档和这个答案的理解是,如果数据存在,则 NSManagedObjectContextexistingObjectWithID:error:
和objectWithID:
方法应该返回相同的对象,但是当数据不存在时,existingObjectWithID:error:
将返回nil
,而objectWithID:
将返回一个有故障的对象而不是数据。
我在应用程序中看到的是一个实例(在子托管对象上下文中的后台线程上创建对象并保存之后,然后转到主线程,保存并将对象 ID 从子上下文带到父对象上下文),existingObjectWithID:error:
返回nil
,但objectWithID:
返回具有有效数据的实际可用对象,而不是错误。
我对这两种方法的理解不正确吗?难道我做错了什么?
(我想要nil
返回--when-there's-no-data 的行为existingObjectWithID:error:
,但是无法获取新创建的对象的数据是有问题的。)
编辑:我想我可以使用(如此处所做的objectWithID:
)替换伪造的对象,但 try-catch 在Objective-C,这似乎是一个非常糟糕的主意。nil