-existingObjectWithID:error:和-objectWithID:?之间有什么区别?

时间:2010-06-09 13:47:03

标签: iphone core-data

-existingObjectWithID:error:–objectWithID:之间有什么区别?

3 个答案:

答案 0 :(得分:6)

我相信existingObjectWithID:error:只有在已经在接收上下文中注册的情况下才返回实例。 objectWithID:可能会为尚未注册(拉入)接收上下文的对象返回错误。

答案 1 :(得分:6)

objectWithID:假设对象存在,因此如果您给它一个错误的ID,当您尝试访问返回实体上的属性时,它将引发异常。此外,此方法始终返回实体。

如果对象存在,则

existingObjectWithID:error:将返回一个对象,如果不存在则返回nil。如果出现错误,它将填充错误指针。

答案 2 :(得分:-1)

existingObjectWithID:error:将返回对象(如果已注册) - 也就是说,它已在此NSManagedObjectContext中创建,或已被提取(或使用objectWithID:检索)。否则它将返回nil。此方法无法找到数据存储区中但从未被此上下文检索的托管对象。如果此方法获取了错误的id或已删除的对象的id,则永远不会抛出异常。

数据存储区中但尚未检索到的托管对象可能会被objectWithID:出现故障 - 现在它将被注册并可以访问。如果objectID错误或者对象已被删除,则会引发异常。

重要的是要注意第一次保存时对象id 会改变(从临时ID到永久ID),所以不要期望创建一个对象,保持对它的原始ID,然后保存后使用该ID检索它。您可以致电isTemporaryID以查明保存后对象ID是否会发生变化。