我需要在一个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
答案 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];