这是文档中的错误吗?-existingObjectWithID:error:或-objectWithID:似乎声称不匹配的东西

don*_*ile 5 iphone core-data

从文档:-existingObjectWithID:错误:

如果存在已在上下文中注册的给定ID的托管对象,则直接返回该对象; 否则相应的对象会出现在上下文中.

如果未缓存数据,此方法可能会执行I/O.

与objectWithID:不同,此方法永远不会返回错误.

嗯,这是悖论!

他们说-existingObjectWithID:error:可能会返回错误("故障进入上下文").同时,他们说--objectWithID:确实返回了一个错误,但是--existingObjectWithID:错误:没有.那现在怎么样?两种方法描述都涉及返回故障对象.

有人可以清楚吗?

Tec*_*Zen 12

故障并不意味着"犯错".它实际上意味着,"创造一个完整的对象"与你期望的相反.换句话说,故障对象不是故障.命名法令人困惑.

这是因为旧的DB时代的"解决过错"一词.在那个术语中,你接受了一个错误,即一个对象的幽灵并"解雇"它,从而导致它加载它的属性.这从"触发故障"缩短为"故障",一个天真的读者/听众会认为这意味着"陷入错误".

在训练中,我使用术语"幽灵"作为错误的同义词,并将"物化"用于断层.它有助于清理术语,同时表达我童年时代对Scooby-Do的热爱.