在objective-c中处理数组的最简单方法是什么?

时间:2011-11-07 13:13:32

标签: objective-c nsarray nsnumber

我想创建函数来返回一个带有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 []

2 个答案:

答案 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);
}