Is that possible? I've seen no method that would generate a plain old C vector or array. I have just NSNumber objects in my array which I need as C vector or array.
这有可能吗?我还没有见过生成普通的旧C向量或数组的方法。我的数组中有NSNumber对象我需要它作为C向量或数组。
2 个解决方案
#1
5
An alternative to mouviciel's answer is to use NSArray's getObjects:range:
method.
另一种方法是使用NSArray的getobject:range:方法。
id cArray[10];
NSArray *nsArray = [NSArray arrayWithObjects:@"1", @"2" ... @"10", nil];
[nsArray getObjects:cArray range:NSMakeRange(0, 10)];
Or, if you don't know how many objects are in the array at compile-time:
或者,如果您不知道在编译时数组中有多少对象:
NSUInteger itemCount = [nsArray count];
id *cArray = malloc(itemCount * sizeof(id));
[nsArray getObjects:cArray range:NSMakeRange(0, itemCount)];
... do work with cArray ...
free(cArray);
#2
1
If you need your C array to carry objects, you can declare it as :
如果您需要您的C数组来携带对象,您可以将其声明为:
id cArray[ ARRAY_COUNT ];
or
或
id * cArray = malloc(sizeof(id)*[array count]);
Then you can populate it using a loop:
然后您可以使用循环填充它:
for (int i=0 ; i<[array count] ; i++)
cArray[i] = [array objectAtIndex:i];
#1
5
An alternative to mouviciel's answer is to use NSArray's getObjects:range:
method.
另一种方法是使用NSArray的getobject:range:方法。
id cArray[10];
NSArray *nsArray = [NSArray arrayWithObjects:@"1", @"2" ... @"10", nil];
[nsArray getObjects:cArray range:NSMakeRange(0, 10)];
Or, if you don't know how many objects are in the array at compile-time:
或者,如果您不知道在编译时数组中有多少对象:
NSUInteger itemCount = [nsArray count];
id *cArray = malloc(itemCount * sizeof(id));
[nsArray getObjects:cArray range:NSMakeRange(0, itemCount)];
... do work with cArray ...
free(cArray);
#2
1
If you need your C array to carry objects, you can declare it as :
如果您需要您的C数组来携带对象,您可以将其声明为:
id cArray[ ARRAY_COUNT ];
or
或
id * cArray = malloc(sizeof(id)*[array count]);
Then you can populate it using a loop:
然后您可以使用循环填充它:
for (int i=0 ; i<[array count] ; i++)
cArray[i] = [array objectAtIndex:i];