Когда в Xcode 5 я использую код ниже, который находится в области @interface, чтобы получить данные из моей модели CoreData. Он говорит мне, что мне следует вставить полуколоду здесь,NSManagedObjectContext дает ошибку с запросом «;» и я не уверен, почему
- (NSManagedObjectContext *)managedObjectContext;
Любая помощь приветствуется!
Ниже представлен мой полный блок кода.
//Get Data
- (NSManagedObjectContext *)managedObjectContext{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
В чем смысл 'if ([delegate performSelector: @selector (managedObjectContext)])'? Если он ответит на селектор, он вернет moc, если он не сработает. – Abizern
@Abizern: Нет, он вернет ноль. Это не означает крушение. Многие API-интерфейсы в obj-c возвращают nil, если что-то не существует. Это довольно часто. – cjwirth
@cjwirth Действительно? Я думаю, вы обнаружите, что это вызывает исключение, если объект не отвечает на сообщение. Вместо этого OP должен вызывать 'responsesToSelector:', который часто выполняется перед отправкой сообщения объекту, который может не отвечать на сообщение по этой точной причине. – Abizern