将double数组添加到nsmutable数组

时间:2015-07-27 00:55:37

标签: ios objective-c xcode nsmutablearray double

我需要在一个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 

2 个答案:

答案 0 :(得分:3)

除了Dasblinkenlight的答案,您还可以使用NSNrray的NSNumber并将其添加到您的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

您可以根据需要添加任意数量的NSNr NSArrays,并使用sample[][]获取NSNumber,然后使用doubleValue轻松解开它。

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

改变这个:

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

到此:

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

答案 1 :(得分:2)

只能将Objective-C对象添加到NSMutableArray。由于double的数组不是的Objective-C对象,因此您需要将数组包装成可放置在Objective-C集合中的内容。例如,您可以将其包装在NSData

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

当然,现在你需要在访问它之前“解包”你的数组:

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