我的应用程序在iPhone设备和模拟器中运行。 Everythings似乎很好,但我在构建期间看到编译器警告。我讨厌提供不完全正确的代码,所以我需要摆脱这个警告。编译器警告是:
newsReaderController.m:24:警告:协议中找不到“-managedObjectContext”
守则是:
- (void)viewDidLoad {
[super viewDidLoad];
//CORE DATA
if (managedObjectContext == nil) {
managedObjectContext = [[[UIApplication sharedApplication] delegate] managedObjectContext];
}
}
CoreData操作的managedObjectContext在App Delegate中设置。核心数据框架是重要的,应用程序就像一个魅力。
对我有什么暗示?我现在正在使用Objective-C几周,但似乎每天都有新的东西需要学习:)
答案 0 :(得分:8)
由于-[UIApplication delegate]
返回类型为id<UIApplicationDelegate>
的对象,编译器抱怨该协议中不存在-managedObjectContext
方法。它就在那里,你知道它就在那里,所以你可以通过强制转换为你的委托的特定类型(MyAppDelegate
或其可能被称为的任何类型)或者转换为id
来解决这个问题:
id appDelegate = (id)[[UIApplication sharedApplication] delegate];
managedObjectContext = [appDelegate managedObjectContext];