文档状态:
...此方法始终返回一个对象。假定 objectID 表示的持久存储中的数据存在 - 如果不存在,则在您访问任何属性时(即触发故障时),返回的对象将引发异常。这种行为的好处是它允许您创建和使用故障,然后在以后或在单独的上下文中创建基础行。
在 Apple 的“Core Recipes”示例应用程序中,该方法的结果用于填充 NSFetchRequest,然后使用请求的结果,并带有注释:
// first get the object into the context
Recipe *recipeFault = (Recipe *)[context objectWithID:objectID];
// this only creates a fault, which may NOT resolve to an object (for example, if the ID is for
// an objec that has been deleted already): create a fetch request to get the object for real
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity: [NSEntityDescription entityForName:@"Recipe" inManagedObjectContext:context]];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(self == %@)", recipeFault];
[request setPredicate: predicate];
我已经看到了许多objectWithID
直接使用结果的示例(其他代码和苹果的“iClass”) - 意思是,它的属性被访问并愉快地处理。
应该objectWithID
始终被视为“可能存在”的对象吗?
我之所以问,是因为我刚刚遇到了这个问题,并没有反对它的存在。