Как избавиться от '-managedObjectContext', не найденного в протоколе (ах) - PullRequest
2 голосов
/ 30 ноября 2010

мое приложение работает на устройстве iPhone, а также в симуляторе.Все выглядит хорошо, но я вижу предупреждение компилятора во время сборки.Я ненавижу доставлять код, который не совсем корректен, поэтому мне нужно избавиться от этого предупреждения.Предупреждение компилятора:

newsReaderController.m: 24: предупреждение: '-managedObjectContext' не найден в протоколе (ах)

Код:

- (void)viewDidLoad {
    [super viewDidLoad];
    //CORE DATA
    if (managedObjectContext == nil) { 
    managedObjectContext = [[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    }
}

УправляемыйObjectContext для операции CoreData настраивается в делегате приложения.Базовая структура данных важна, и приложение работает как шарм.

Любой намек на меня?Я работаю с target-C уже несколько недель, но, кажется, каждый день чему-то новому учусь :)

1 Ответ

8 голосов
/ 30 ноября 2010

Поскольку -[UIApplication delegate] возвращает объект типа id<UIApplicationDelegate>, компилятор жалуется, что в этом протоколе не существует метода -managedObjectContext. Он есть, и вы знаете, что он есть, поэтому вы можете решить эту проблему, приведя к конкретному типу вашего делегата (MyAppDelegate или как бы он ни назывался), или приведя к id:

 id appDelegate = (id)[[UIApplication sharedApplication] delegate];
 managedObjectContext = [appDelegate managedObjectContext];
...