将双数组添加到 nsmutablearray

add double array to nsmutable array

我需要向 nsmutablearray 添加一个双精度数组(如双精度示例[容量数量];),但似乎比我想象的要难。所以我有:

NSMutableArray *sample; 
double ex[2];

作为我的 .m 文件中的全局变量

在 void 方法中有两个双参数 example1 和 example2 我正在尝试

ex[0] = example1;
ex[1] = example2;

然后将这个 ex 数组添加到 nsmutablearray,但是,如果我这样做,我会收到错误消息:

[sample addObject:ex];

有人请帮忙,我也是这方面的新手,所以我不太清楚如何。提前致谢!

我觉得我没有把自己解释清楚,所以我会添加这个。

So basically, I want my mutablearray to look like this:

[[3.78,2.00], [4.6,8.90098], [67.9099, 56.788] ...]

like that 

只能将 Objective-C 个对象添加到 NSMutableArray。由于 doubles 的数组 而不是 一个 Objective-C 对象,你需要将你的数组包装成可以放在 Objective-C 集合中的东西.例如,您可以将其包装在 NSData:

NSData *wrapped = [NSData dataWithBytes:ex, length:sizeof(ex)];
[sample addObject:wrapped];

当然,现在您需要 "unwrap" 您的数组才能访问它:

NSData *wrapped = [sample objectAtIndex:...];
double* tmp = (double*)wrapped.bytes;
double x = tmp[0];

对于 Dasblinkenlight 的回答,您也可以使用 NSNumbers 的 NSArray 并将其添加到您的 NSMutableArray。


double example1 = 1.113;
double example2 = 129.74;
NSMutableArray *sample = [[NSMutableArray alloc] init];
NSArray *ex = @[[NSNumber numberWithDouble: example1], [NSNumber numberWithDouble: example2]];
[sample addObject: ex];
NSLog(@"example1: %f, example2: %f", ((NSNumber*)sample[0][0]).doubleValue, ((NSNumber*)sample[0][1]).doubleValue);
//logs example1: 1.113000, example2: 129.740000

您可以根据需要添加任意数量的 NSNumber NSArray,并使用 sample[][] 获取 NSNumber,然后使用 doubleValue.

轻松解包

如果您希望两个维度都是可变的,只需将 NSNumber 放入可变数组中即可。

改变这个:

NSArray *ex = @[[NSNumber numberWithDouble: example1], [NSNumber numberWithDouble: example2]];

对此:

NSMutableArray* ex = [NSMutableArray arrayWithObjects: [NSNumber numberWithDouble: example1], [NSNumber numberWithDouble: example2], nil];