我想创建函数来返回一个带有2个元素的1d数组,如下所示:
(NSArray *) myFunction {
NSArray * myArr = [[NSArray alloc]initwithobjects:[NSNumbers numberwithfloat:1.0f],[NSNumbers numberwithfloat:1.0f]];
//the above line is just pseudo code
}
但是当我想要检索nsarray形式这个函数时,我想以最简单的方式进行 这在目标c似乎是不可能的 这就是我写的两个简单的浮点值,这个值并不适用,但我对如何以更简单的方式进行操作没有任何进一步的了解
NSArray *tt2 = [[NSArray alloc] initWithArray:[self myFunction]];
float fp1=0.0f;
float fp2=0.0f;
BOOL firstTime = YES;
for(NSNumber *n in tt2)
{
if (firstTime) {
NSLog(@"%@" , n);
fp1 = [n floatValue];
firstTime = NO;
}
else {
fp2 = [n floatValue];
}
}
上面的代码是ridiculos但我没有任何其他选择,除非你建议我如何将nsarray转换为nsnumber然后将nsnumber转换为float []
答案 0 :(得分:3)
如果您只存储浮点数,则可以使用C数组。 NSArray只能存储对象。
但是,您似乎还没有听说过objectAtIndex
方法?
NSNumber *firstNumber = [myArray objectAtIndex:0];
NSNumber *secondNumber = [myArray objectAtIndex:1];
这对你的情况有帮助吗,你在这个问题上尝试做什么并不是很清楚。
答案 1 :(得分:2)
只需使用C数组。
// C function returning dynamically allocated array of floats.
float *CreateNumbers(void)
{
float *numArray = malloc(sizeof(float));
numArray[0] = 1.0;
numArray[1] = 2.0;
return numArray;
}
- (void)exampleMethod
{
float *numbers = CreateNumbers();
float val1 = numbers[0];
float val2 = numbers[1];
NSLog(@"val1: %.2f, val2: %.2f\n", val1, val2);
free(numbers);
}