我在Objective-C中使用基本的for循环遇到麻烦。我对这种语言不熟悉,但是我尝试实现以下目标:
for(int i=0; i<[yVals count]; i++)
{
yVals[i] = exp(yVals[i]);
}
其中yVals是NSArray中的双精度数组。
但是,我在xCode中收到此错误:“将'id'传递给参数类型'double'”。
我该如何解决?我过度简化了吗?
最佳答案
您需要装箱/取消装箱原始类型。您的代码必须类似于:
for(int i=0; i<[yVals count]; i++)
{
yVals[i] = @(exp([yVals[i] doubleValue]));
}
我假设
yVals
是NSMutableArray
对象的NSNumber
。请注意,需要在该号码上拨打
doubleValue
,以便可以在其上拨打exp()
。然后,将@( )
语法框将结果备份到NSNumber
对象中,以便可以将其放回数组中。