2011-09-29 95 views
0

我有一個自定義的「大腦」類,它有一個自定義的「食譜」對象作爲它的一個屬性。訪問對象內的對象的屬性?

配方類有四個「成分」對象作爲屬性。

如果我嘗試做:

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

的標籤是空白的(雖然我沒有得到任何錯誤)

,但如果我這樣做

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

這一個工程......都是你不能通過點運算符深入研究這些屬性?

謝謝!

+0

是在ingredient1財產的指針的init方法?我的Obj-C語法有點生疏,這已經有一段時間了。我知道Ingredient * temp的原因是因爲你正在設置一個指向該對象的指針,所以編譯器詢問「什麼是myIngredients.ingredientName的值?」當使用溫度。 – Yatrix

+0

是的,ingredient1屬性是一個指向成分對象的指針 – sayguh

回答

1

是的,你可以用點操作符來做到這一點。這些屬性中最有可能的一個是零。

1

檢查brain是否不爲零。

如果不是:

檢查myrecipeingredient1屬性?它們是否設置爲retain
如果沒有,請保留。

檢查@synthesize兩者。是不是有任何類型的錯誤,所以他們的名字不會匹配屬性和ivars?
如果有錯誤(lokk吃上/下),正確。

我也猜測Ingredient繼承自NSObject(至少)並有[super 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

和像

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

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

    return self; 
} 
+0

我想他想說的是他需要更多的信息。 =) – Yatrix

+0

@Yatrix:關於什麼的更多信息? – Oliver

+0

你剛剛問了一堆關於對象的問題,就這些。正在「幽默」。 – Yatrix