Ios 将双数组添加到nsmutable数组

Ios 将双数组添加到nsmutable数组,ios,objective-c,xcode,nsmutablearray,double,Ios,Objective C,Xcode,Nsmutablearray,Double,我需要向nsmutablearray添加一个双数组(如double示例[number of capacity];),但它似乎比我想象的要难。因此,我: NSMutableArray *sample; double ex[2]; 作为我的.m文件中的全局变量 在void方法中,我尝试使用两个双参数,即example1和example2 ex[0] = example1; ex[1] = example2; 然后将此ex数组添加到nsmutablearray,但是,如果执行此操作,则会出现错误

我需要向nsmutablearray添加一个双数组(如double示例[number of capacity];),但它似乎比我想象的要难。因此,我:

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];
当然,现在您需要在访问阵列之前“展开”阵列:

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

只有Objective-C对象才能添加到
NSMutableArray
。由于doubles数组不是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];

除了Dasblinkenlight的答案之外,您还可以使用NSNumber的NSArray并将其添加到NSMutableArray中


您可以添加任意多个NSNumber的NSarray,并使用
sample[][]
获取NSNumber,然后使用
doubleValue
轻松地将其展开

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

更改此项:

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

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

除了Dasblinkenlight的答案之外,您还可以使用NSNumber的NSArray并将其添加到NSMutableArray中


您可以添加任意多个NSNumber的NSarray,并使用
sample[][]
获取NSNumber,然后使用
doubleValue
轻松地将其展开

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

更改此项:

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

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


不确定,但这可能是重复的-请检查此问题和答案:。你的
ex
数组必须是一个C数组,还是可以是
NSArray
NSMutableArray
?它是一个双数组:)
{}
表示字典,而不是数组。哦。。我懂了!谢谢:)不确定,但这可能是重复的-请检查此问题和答案:。你的
ex
数组必须是一个C数组,还是可以是
NSArray
NSMutableArray
?它是一个双数组:)
{}
表示字典,而不是数组。哦。。我懂了!谢谢:)真管用!但是,当我尝试nslog样本nsmutablearray时,double值不再出现,类似于@jane,这是因为
NSData
不知道里面有什么,所以它会打印原始字节。如果您通过展开来检索数据,您将获得您的
双倍值。哦,不…:(我正在尝试此代码double*tmp=(double*)wrapped.data;但我得到一个错误“在'NSData*'类型的对象上找不到属性'data'”我现在觉得自己很愚蠢,我要试试Metabble建议的方法,但非常感谢dasblinkenlight所做的努力!我非常感谢!@jane抱歉,该属性名为
字节
,而不是
数据
。哦,我明白了!非常感谢dasblinkenlight:)这很有效!但是,当我尝试nslog样本nsmutablearray时,double值不再出现,类似于@jane,这是因为
NSData
不知道里面有什么,所以它会打印原始字节。如果您通过展开来检索数据,您将获得您的
双倍值。哦,不…:(我正在尝试此代码double*tmp=(double*)wrapped.data;但我得到一个错误“在'NSData*'类型的对象上找不到属性'data'”我现在觉得自己很愚蠢,我要尝试Metable建议的方法,但非常感谢DasbLinkedLight所做的努力!我非常感谢!@jane抱歉,该属性名为
字节
,而不是
数据
。哦,我明白了!非常感谢DasbLinkedLight:)那么示例[]是2D nsmutablearray?有意思。。我想试试这个:)谢谢Metable:)示例将是一个包含非可变数组的可变数组。所以它只在一维中是可变的。然而,这很容易改变。我会更新帖子。这太棒了!非常感谢Metable:)那么示例[]是一个2D nsmutablearray?有意思。。我想试试这个:)谢谢Metable:)示例将是一个包含非可变数组的可变数组。所以它只在一维中是可变的。然而,这很容易改变。我会更新帖子。这太棒了!非常感谢你:)