2013-03-19 2 views
1

Я работаю с cocos2d и CoreData. Я импортировал «AppDelegate.h», но я не могу создать из него объект. Я бы подумал, что все, что я сделал бы, это:Xcode Cocos2d Не удается создать объект AppDelegate

AppDelegate *delegate; 

Когда я это сделаю, вы получите сообщение об ошибке, когда AppDelegate не определен. Файлы AppDelegate .h и .m находятся рядом с основным файлом.

Кроме того, когда я пытаюсь записать файл, я не получаю сообщение об ошибке, но он не пишет.

+1

Ну, дон 't путайте ваш managedObjectContext с вашим делегатом приложения. Учитывая, что вы используете основные данные, вы, вероятно, хотите создать контекст NSManagedObjectContext *; вместо того, что вы написали выше. – JiuJitsuCoder

+0

О да, вы правы, однако мне нужно создать объект из AppDelegate, чтобы использовать coredata. Поправьте меня если я ошибаюсь. –

ответ

0

Код плиты котла, созданный XCode (предполагается, что вы используете XCode), создаст NSManagedObjectContext, который вы назвали * managedObjectContext. Если вам нужно создать другие объекты, которые будут взаимодействовать с вашей основной моделью данных (например, контроллером представления), вы просто передадите этот объект managedObjectContext в качестве аргумента (или привяжите его к свойству в своем пользовательском классе) и взаимодействуете с это в вашем пользовательском классе. Стоит отметить, что не очень хорошая практика проходить вокруг объекта AppDelegate в вашем приложении. Делегат вашего приложения должен быть основой вашей базы кода и не рассматриваться как типичный класс. Есть определенные случаи, когда вы хотите (или нужно), чтобы передать приложение делегата в качестве объекта или ссылаться на него в IB, но обычно ваше приложение будет запущен в методе

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 

и вы будете запускать свой основной контроллер представления оттуда.

Некоторым вещам в основных данных также требуется постоянный координатор хранилища (например, получение идентификаторов управляемого объекта), поэтому вам может понадобиться передать это также. Если вам нужна помощь в работе с Core Data, есть куча замечательных статей и книг по этому вопросу. Я рекомендую читать столько, сколько вы можете, так как Core Data может быть сложно понять поначалу. Это помогло мне сначала прочитать кучу учебников, так как все объясняют это немного по-другому.

Вот отличный недавний учебник написан на Наручники, 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; 
Смежные вопросы