2011-12-11 75 views
0

目標C: 我有一個NSMutableArray與類持股目標C動態訪問對象方法在Array

類有返回的 (numberOfShares * shareMktVlue)

的產品的方法valueInDollars的3個對象

for循環(下面)試圖動態調用每個元素的方法valueInDollars在Array如下:

NSUInteger itemCount = [stockHolding count]; 

for (int i = 0; i < itemCount; i++) { 
    NSString *itemd = [stockHolding objectAtIndex:i]; 
    float mktValue = [AAPL valueInDollars]; 
} 

的問題是:如何AAPL可以被聲明動態變爲紅色,以便每次循環迭代到數組中的股票符號對象都會發生變化。

我試着在上面的代碼「itemd」取代AAPL,但得到的錯誤信息:

「的NSString可能不valueInDollars迴應」

這裏任何幫助,將不勝感激。

+3

聽起來像你有一個字符串數組不是'StockHolding'對象數組 –

+0

我很樂意幫助這個,但我有幾個問題。班級的名字是什麼?數組的名稱是什麼?你想用這個循環完成什麼? NSString的目的是什麼? APPL在代碼中代表什麼?謝謝。 –

+0

如果你在'NSString * itemd = [stockHolding objectAtIndex:i];'後面添加'NSLog(@「%@」,itemd);'',你可以發佈輸出嗎? – hypercrypt

回答

1

您的代碼示例似乎表明您的NSMutableArray被稱爲stockHolding,而您的問題文本指示stockHolding是數組中的對象的類。如果我們假設數組名是正確的,在它的對象是StockHolding類的那麼下面應該工作(使用Objective-C 2.0快速列舉):

for (StockHolding *stock in stockHolding) { 
    float mktValue = [stock valueInDollars]; 
    // ... 
} 
0

第一:SJS的答案是正確的,我總是喜歡此解決方案。

另一個解決方案是:

NSUInteger itemCount = [stockHolding count]; 

for (int i = 0; i < itemCount; i++) { 
    id itemd = [stockHolding objectAtIndex:i]; 
    float mktValue = [AAPL valueInDollars]; 
} 

或:

NSUInteger itemCount = [stockHolding count]; 

for (int i = 0; i < itemCount; i++) { 
    StockHolding *itemd = [stockHolding objectAtIndex:i]; 
    float mktValue = [AAPL valueInDollars]; 
} 

注:
你應該調用,而不是你的持股持股陣列。你應該使用複數。