我有几个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”。 谢谢大家!
答案 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]];