Доступ к свойству объекта внутри объекта? - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть собственный класс "мозг", в котором в качестве одного из свойств используется пользовательский объект "рецепт".

Класс рецепта имеет четыре объекта "ингредиент" в качестве свойств.

ЕслиЯ пытаюсь сделать:

brain.myRecipe.ingredient1 = myIngredient;
self.displayLabel.text = brain.myRecipe.ingredient1.ingredientName;

Метка пуста (хотя я не получаю ошибок)

, но если я сделаю

Ingredient * temp = myIngredient;
self.displayLabel.text = temp.ingredientName;

Это работает ...Разве вы не можете детализировать такие свойства с помощью оператора точки?

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Проверьте, не равен ли brain ноль.

Если нет:

Проверить myrecipe и ingredient1 свойства? Они установлены на retain?
Если нет, положить сохранить.

Проверьте @synthesize для обоих. Нет ли ошибки типа, чтобы их имя не совпадало с именем, заданным для свойств и ivars? Если есть ошибки (в верхнем / нижнем регистре), исправьте.

Я также предполагаю, что Ingredient наследуется от NSObject (по крайней мере) и имеет [super init] в начале своего метода init?
Если нет, то наследуете ли вы класс NSObject и сначала его инициализируете.

Если ничего не работает ... тогда просто добавьте еще код. Как вы хотите, чтобы мы решили вашу проблему с помощью такого маленького кусочка кода?

У вас должно быть что-то вроде:

Brain : NSObject {
   MyReceipe* receipe;
}

@property (nonatomic, retain) MyReceipe* receipe;



MyReceipe : NSObject {
   Ingredient* ingredient1;
}

@property (nonatomic, retain) Ingredient* ingredient1;



Ingredient : NSObject {
   NSString* ingredientName;
}

@property (nonatomic, retain) NSString* ingredientName;

во всех .m, добавить @synthsize the_property_name

и метод init, например

- (id) init {
   self = [super init];
   if (!self) return nil;

   self.the_ivar = nil; (or whatever you want)

   return self;
}
1 голос
/ 29 сентября 2011

Да, вы можете сделать это с помощью оператора точки. Скорее всего, одним из этих свойств является ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...