目标C: 我有一个带有3个类stockHolding对象的NSMutableArray
该类有一个方法valueInDollars,它返回的乘积 (numberOfShares * shareMktVlue)
for循环(下面)尝试动态调用Array中每个元素的方法valueInDollars,如下所示:
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”
任何帮助都将不胜感激。
答案 0 :(得分:1)
您的代码示例似乎表明您的NSMutableArray
被称为stockHolding
,而您的问题文本表明stockHolding是数组中对象的类。如果我们假设数组名称是正确的并且其中的对象是类StockHolding
,则以下内容应该有效(使用Objective-C 2.0快速枚举):
for (StockHolding *stock in stockHolding) {
float mktValue = [stock valueInDollars];
// ...
}
答案 1 :(得分: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];
}
注意:
你应该调用你的数组stockHoldings而不是stockHolding。你应该使用复数。