将数组中的对象转换为double?

时间:2013-09-11 11:30:18

标签: objective-c

我有几个NSMutable数组,比如arrA,arrB等,其中包含对象。它们以[NSNumber numberWithDouble:number]存储为双精度数。 它们在.h文件中定义为:

@property (strong, nonatomic) NSMutableArray *arrA;
.m文件中的

和“lazy instantiated”为:

- (NSMutableArray *)arrA
{
    if (!_arrA) _arrA = [[NSMutableArray alloc] initWithCapacity: 2000];
    return _arrA;
}

我还有一个方法,其中使用了几个参数来调用结果

- (void) function: (double)A : (double)B
{ 
    etc 
}

现在我在程序中使用双变量(不是上述数组中的对象)调用函数/方法,如:

- [self function: A : B];
一切正常。但是当我使用数组中的对象调用函数时,编译器会给出错误。我尝试了几种方法来解决,但我失败了。 我用过:

[self function: [_arrA ObjectAtIndex:i] : [_arrB ObjectAtIndex: i]]; --> fails
[self function: [_arrA ObjectAtIndex:i doubleValue] :  [_arrB ObjectAtIndex:i doubleValue]; --> fails
[self function: [_arrA ObjectAtIndex:i] doubleValue :  [_arrB ObjectAtIndex:i] doubleValue; --> fails
[self function: [[_arrA ObjectAtIndex:i] doubleValue] :  [[_arrB ObjectAtIndex:i] doubleValue]; --> fails
[self function: ([arrA ObjectAtIndex:i] doubleValue) :  ([arrB ObjectAtIndex:i] doubleValue)]; --> fails

有人可以解释一下如何将参数转换成双打吗?

*已编辑* 我现在知道语法是:[self function:[[_arrA ObjectAtIndex:i] doubleValue]参数。现在我收到错误“没有'NSMutableArray'的可见界面 声明选择器'ObjectAtIndex'“。

已编辑#2 ** 现在我知道它是“objectAtIndex”而不是“ObjectAtIndex”。 谢谢大家!

2 个答案:

答案 0 :(得分:1)

[self function: [arrA ObjectAtIndex:i] : [arrB ObjectAtIndex: i]]; --> fails
[self function: [arrA ObjectAtIndex:i doubleValue] :  [arrB ObjectAtIndex:i doubleValue]; --> fails
[self function: [arrA ObjectAtIndex:i] doubleValue :  [arrB ObjectAtIndex:i] doubleValue; --> fails
[self function: [[arrA ObjectAtIndex:i] doubleValue] :  [[arrB ObjectAtIndex:i] doubleValue]; --> fails
[self function: ([arrA ObjectAtIndex:i] doubleValue) :  ([arrB ObjectAtIndex:i] doubleValue); --> fails

这些失败是因为您的Function

中存在语法错误和/或其他错误

简化它看起来像这样。

double c;
double d;

c = [[arrA objectAtIndex:i]doubleValue];
d = [[arrB objectAtIndex:i]doubleValue];

[self function:c:d]; 

如果这对您没有帮助,您还有其他问题,应该在网站上搜索答案,如果不存在,请提出有关该问题的新问题。

答案 1 :(得分:0)

缺少']'试试这个

[self function: [[arrA ObjectAtIndex:i] doubleValue] :  [[arrB ObjectAtIndex:i] doubleValue]];