如何摆脱协议中找不到的'-managedObjectContext'

时间:2010-11-30 09:13:27

标签: delegates ios4 nsmanagedobjectcontext

我的应用程序在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几周,但似乎每天都有新的东西需要学习:)

1 个答案:

答案 0 :(得分:8)

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

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