如何制作一组数字? (目标C)

时间:2014-05-20 13:56:05

标签: objective-c nsarray nsnumber

我试图制作一系列数字。我需要调用这个数组的每个元素。 (array [i])。我这样做了:

NSNumber *array[] = {@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f};

但是当我调用这个数组时,它给了我一个错误:

  

读取类型" NSNumber"

类型的对象上未找到的数组元素的预期方法

从评论中移除了其他代码:

int SIZE = 97;
fftw_complex *data, *fft_result, *ifft_result;
fftw_plan     plan_forward, plan_backward;
int           i;
NSArray * array = @[@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f];

float a0 = [array[0] floatValue];
data = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * SIZE);
fft_result  = ...
ifft_result = ...
plan_forward  = ...
plan_backward ...

for( i = 0 ; i < SIZE ; i++ ) {
    data[i][0] = array[i];
    data[i][1] = 0.0;
}

2 个答案:

答案 0 :(得分:0)

您可能正在尝试初始化数组,但在#34;泛型&#34;时尚。 Objective-C不支持泛型。

以下是如何初始化NSNrray的NSNrray:

NSArray * array = @[@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f];

答案 1 :(得分:0)

有两个问题

首先,创建数组的语句必须是错误,变量后面的“[]”并使用“{}”而不是“[]”来初始化数组。

然后从注释中以不同方式访问数组项。阵列是一个缩小,而不是两个缩小。然后,数组的返回值为NSNumber,必须取消装箱,从NSNumber转换为float

以下是更正错误的示例代码:

NSArray * array = @[@0.240128f , @0.240128f , @0.953934f , @1.181351f, @1.382523f, @1.497086f, @1.437790f , @0.851196f];
float a0 = [array[0] floatValue];
NSLog(@"a0: %f", a0);

NSLog输出:

  

a0:0.240128

最好的选择:花点时间了解一般的NSArray访问权限和Objective-C。网上有许多资源,包括手册/文档和教程。