Ios 将双数组添加到nsmutable数组
我需要向nsmutablearray添加一个双数组(如double示例[number of capacity];),但它似乎比我想象的要难。因此,我: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 *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:)示例将是一个包含非可变数组的可变数组。所以它只在一维中是可变的。然而,这很容易改变。我会更新帖子。这太棒了!非常感谢你:)