3

我的应用程序在 iPhone 设备和模拟器上运行。一切似乎都很好,但我在构建过程中看到了编译器警告。我讨厌提供不完全正确的代码,所以我需要摆脱这个警告。编译器警告是:

newsReaderController.m:24:警告:在协议中找不到“-managedObjectContext”

该代码是:

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

CoreData 操作的 managedObjectContext 在 App Delegate 中设置。核心数据框架是重要的,应用程序就像一个魅力。

对我有什么提示吗?我现在使用 Objective-C 已经有几个星期了,但似乎每天都有新的东西要学:)

4

1 回答 1

9

由于-[UIApplication delegate]返回一个类型的对象id<UIApplicationDelegate>,编译器抱怨该-managedObjectContext协议中不存在任何方法。它就在那里,你知道它就在那里,所以你可以通过强制转换为你的委托的特定类型(MyAppDelegate或任何它可能被调用的类型)来解决这个问题,或者通过强制转换为id

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