состояние документации:
... Этот метод всегда возвращает объект. Данные в постоянном хранилище представленный objectID предполагается существует - если это не так, возвращается объект выдает исключение, когда вы доступ к любому свойству (то есть, когда неисправен). Преимущество этого поведение заключается в том, что это позволяет вам создавать и использовать ошибки, а затем создавать нижележащие строки позже или в отдельном context.
и в примере приложения 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];
Я видел много примеров (другие code и apple 'iClass'), где результат objectWithID
используется напрямую - это означает, что его свойства доступны и легко обрабатываются.
Если objectWithID
всегда должен быть рассматривается как объект типа «возможно-это-существует»?
Я спрашиваю, потому что я только что столкнулся с этим и не делал выборки против его существования.