2013-03-19 34 views
1

我正在使用cocos2d和CoreData。我導入了「AppDelegate.h」,但我無法從中創建對象。我會認爲我所要做的就是:Xcode Cocos2d無法創建AppDelegate對象

AppDelegate *delegate; 

當我這樣做的時候會得到一個錯誤,說沒有定義AppDelegate。 AppDelegate .h和.m文件位於主文件旁邊。

此外,當我嘗試寫入文件時,我沒有收到錯誤,但沒有寫入。

+1

好了,別不要將您的managedObjectContext與您的應用程序委託混淆。鑑於您正在使用核心數據,您可能正在創建一個NSManagedObjectContext *上下文;而不是你上面寫的。 – JiuJitsuCoder 2013-03-19 23:21:50

+0

哦,是的,你是對的,但是我需要能夠從AppDelegate創建一個對象來使用coredata。如我錯了請糾正我。 – 2013-03-19 23:42:05

回答

0

由XCode創建的鍋爐板代碼(我假設您使用的是XCode)將爲您創建一個名爲* managedObjectContext的NSManagedObjectContext。如果您需要創建其他將與您的核心數據模型(如視圖控制器)交互的對象,只需將該managedObjectContext對象作爲參數傳遞(或將其鏈接到自定義類中的屬性)並與其交互它在你的自定義類中。值得注意的是,在應用程序中傳遞AppDelegate對象並不是一個好習慣。您的應用程序委託應該在您的代碼庫的基礎上,而不是作爲典型的類來對待。有一定時候,你會希望(或需要)通過應用程序的委託爲對象或引用它在IB,但通常你的應用程序將在您的

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

方法啓動,你將啓動主視圖控制器從那裏。

核心數據中的一些內容還需要持久性存儲協調器(例如,檢索托管對象ID),因此您可能還需要將其傳入。如果您需要Core Data的幫助,那麼有關這個主題的一些很棒的文章和書籍。我建議你儘可能多地閱讀,因爲核心數據起初很難理解。它幫助我閱讀了大量的教程,因爲每個人都有不同的解釋。

這裏是寫在綁定,核心數據有很大最近的教程,並與應用程序委託的工作,讓你開始:http://www.raywenderlich.com/21752/how-to-use-cocoa-bindings-and-core-data-in-a-mac-app

0

在cocos2d 2.0,AppDelegate中被重命名爲AppController的

AppController *app = (AppController*)[UIApplication sharedApplication].delegate;