我在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]));
}


我假设yValsNSMutableArray对象的NSNumber

请注意,需要在该号码上拨打doubleValue,以便可以在其上拨打exp()。然后,将@( )语法框将结果备份到NSNumber对象中,以便可以将其放回数组中。

10-08 15:43