Общий объект с другими классами?

Я только начал изучать цель c. У меня есть небольшие проблемы и вопросы, надеюсь, вы, ребята, могли бы мне помочь.

У меня есть ViewController, я назвал его: GameViewController.

Этот GameViewController будет вызывать класс модели «PlayerModel» (NSObject), и этот PlayerModel содержит объект «PlayerProfile» (это NSObject).

ViewDidLoad в GameViewController вызовет и инициирует класс модели:

playerModel = [[PlayerModel alloc] initWithInt:playerID];

Затем в методе initWithInt PlayerModel я заполняю данные PlayerProfile, извлекая данные из онлайн-базы данных. Мне удается заполнить данные, но когда я хочу вызвать их в gameViewController

// This is gameViewController.m
....
playerModel.playerProfile.name;

Но я получил это сообщение об ошибке: «Имя свойства не найдено в объекте типа PlayerProfile».

Я NSLog playerProfile в gameViewController, его «(null)», тогда как когда я NSLog в playerModel, он имеет некоторые значения. Как мне передать эти значения и сделать их универсальными, чтобы другие классы могли их использовать (устанавливать значение)?


person phpnoob    schedule 13.04.2011    source источник


Ответы (1)


Что касается «Имя свойства не найдено», я предполагаю, что это ошибка компиляции. Вероятно, вам не удалось #import PlayerProfile.h в GameViewController.

Если gameViewController равно nil в GameViewController, то либо вы его не инициализировали, либо playerModel равно nil. Вы уверены, что проверяете его после запуска viewDidLoad? Это может быть позже, чем вы думаете.

person Rob Napier    schedule 13.04.2011
comment
Вы правы, я не импортировал PlayerProfile.h в gameviewcontroller. Потому что я импортировал PlayerModel, а PlayerModel импортирует PlayerProfile, поэтому мне не нужно импортировать PlayerProfile. Спасибо, сегодня я кое-что узнал. В любом случае, после импорта ошибок компиляции нет, но все равно ноль. Я не уверен, правильно ли я делаю или нет, может быть, моя программа неверна. Что вы обычно делаете, или какова обычная практика для таких случаев? - person phpnoob; 13.04.2011
comment
Я нашел свой ответ. Чтобы поделиться классом, можно использовать singleton. Пример будет здесь: classroomm.com/objective-c/< /а> - person phpnoob; 13.04.2011