3

私のアプリはiPhoneデバイスとシミュレーターで実行されます。すべて問題ないようですが、ビルド中にコンパイラの警告が表示されます。完全に正しくないコードを提供するのは嫌いなので、この警告を取り除く必要があります。コンパイラの警告は次のとおりです。

newsReaderController.m:24: 警告: '-managedObjectContext' がプロトコルに見つかりません

コードは次のとおりです。

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

CoreData 操作の managedObjectContext は、App Delegate で設定されます。Core Data Framework は importet であり、アプリは魅力的に機能します。

私へのヒントはありますか?私は数週間客観的 C で作業していますが、毎日何か新しいことを学ぶようです :)

4

1 に答える 1

9

-[UIApplication delegate]は type のオブジェクトを返すため、id<UIApplicationDelegate>コンパイラは-managedObjectContext、その 1 つのプロトコルにはメソッドが存在しないと不平を言っています。そこにあり、そこにあることを知っているので、デリゲートの特定のタイプ(MyAppDelegateまたはそれが呼び出される可能性のあるもの)にキャストするか、次のようにキャストすることで、この問題を解決できidます。

 id appDelegate = (id)[[UIApplication sharedApplication] delegate];
 managedObjectContext = [appDelegate managedObjectContext];
于 2010-11-30T09:15:49.753 に答える