2010-11-30 19 views
2

我的應用程序在iPhone設備上運行,也在模擬器中運行。 Everythings似乎很好,但我看到在編譯期間的編譯器警告。我討厭提供不完全正確的代碼,所以我需要擺脫這個警告。編譯器警告是:我如何擺脫沒有在協議中找到'-managedObjectContext'

newsReaderController.m:24:警告: '-managedObjectContext' 不是在協議(第)發現

的代碼是:

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

的managedObjectContext爲CoreData操作被設置在App Delegate中。核心數據框架是重要的,該應用程序就像一個魅力。

對我有什麼提示?我與客觀-C的工作,現在幾個星期,但似乎有一些新的東西每天學習:)

回答

8

由於-[UIApplication delegate]回報id<UIApplicationDelegate>類型的對象,編譯抱怨沒有-managedObjectContext方法在一個存在協議。它的存在,你知道它的存在,這樣你就可以,或者通過鑄造id被投射到您的委託的特定類型(MyAppDelegate或任何可以調用)解決這個問題:

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

不錯!感謝您成爲我今天的老師!這就像一個魅力! – MadMaxAPP 2010-11-30 09:19:36