2010-11-30 28 views
2

mon application fonctionne sur l'appareil iPhone et également dans le simulateur. Tout semble bien, mais je vois un avertissement du compilateur pendant la construction. Je déteste livrer le code qui n'est pas complètement correct, donc je dois me débarrasser de cet avertissement. L'avertissement du compilateur est:Comment se débarrasser de '-managedObjectContext' que l'on ne trouve pas dans le (s) protocole (s)

newsReaderController.m: 24: avertissement: '-managedObjectContext' ne trouve pas dans le protocole (s)

Le code est:

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

Le managedObjectContext pour le fonctionnement CoreData est réglé dans App Delegate. Core Data Framework est importet et l'application fonctionne comme un charme.

un indice pour moi? Je travaille avec Objective-C depuis quelques semaines, mais il semble y avoir quelque chose de nouveau à apprendre tous les jours :)

Répondre

8

Depuis -[UIApplication delegate] renvoie un objet de type id<UIApplicationDelegate>, le compilateur se plaint qu'aucune méthode -managedObjectContext existe dans ce un protocole. Il est là, et vous savez qu'il est là, donc vous pouvez résoudre ce problème par coulée type spécifique de votre délégué (MyAppDelegate ou quoi que ce peut être appelé), ou par coulée à id:

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

de Nice! Merci d'être mon professeur de la journée! Ça fonctionne super bien ! – MadMaxAPP

+0

Fonctionne également pour NSApplication. Merci! –