Как сделать вектор C или массив из NSArray? - PullRequest
2 голосов
/ 05 мая 2010

Возможно ли это? Я не видел ни одного метода, который бы генерировал простой старый вектор C или массив. У меня есть только объекты NSNumber в моем массиве, которые мне нужны как вектор C или массив.

Ответы [ 2 ]

5 голосов
/ 05 мая 2010

Альтернативой ответу Мувисиэля является использование метода NSArray getObjects:range:.

id cArray[10];
NSArray *nsArray = [NSArray arrayWithObjects:@"1", @"2" ... @"10", nil];

[nsArray getObjects:cArray range:NSMakeRange(0, 10)];

Или, если вы не знаете, сколько объектов в массиве во время компиляции:

NSUInteger itemCount = [nsArray count];
id *cArray = malloc(itemCount * sizeof(id));

[nsArray getObjects:cArray range:NSMakeRange(0, itemCount)];

... do work with cArray ...

free(cArray);
1 голос
/ 05 мая 2010

Если вам нужен массив C для переноса объектов, вы можете объявить его как:

id cArray[ ARRAY_COUNT ];

или

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

Затем вы можете заполнить его с помощью цикла:

for (int i=0 ; i<[array count] ; i++)
    cArray[i] = [array objectAtIndex:i];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...