How do I make a vector or C array from NSArray?

Is it possible? I haven't seen any method that would generate a simple old vector or array. I only have NSNumber objects in my array that I need as a C vector or array.

+2


a source to share


2 answers


An alternative to mouviciel is to use the NSArray method getObjects: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);

      

+5


a source


If you need your C array to wrap around objects, you can declare it like:

id cArray[ ARRAY_COUNT ];

      

or



id * cArray = malloc(sizeof(id)*[array count]);

      

Then you can fill it with a loop:

for (int i=0 ; i<[array count] ; i++)
    cArray[i] = [array objectAtIndex:i];

      

+1


a source







All Articles