将双数组添加到 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
。由于 double
s 的数组 而不是 一个 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];
我需要向 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
。由于 double
s 的数组 而不是 一个 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];