Элегантный способ поместить массив значений в CLLocationCoordinate2D - PullRequest
0 голосов
/ 30 января 2012

Есть ли элегантный способ создания объекта CLLocationCoordinate2D из массива значений NSDecimalNumber? Возможно, рекурсивная функция?

Я новичок в цели C, и у меня возникли трудности с этим.

Ниже приведен пример структур данных, с которыми я работаю.


массив значений NSDecimalNumber:

NSLog(@"path: %@", [path description]);

возвращает

path: (
    "-71.4826609644423",
    "27.7231737704478",
    "-71.4826608497223",
    "27.7231120144099",
    "-71.4826391681679",
    "27.7228678610506",
    ...
    "-71.482414263977",
    "27.7225217655116",
)

Я могу вручную создать объект CLLocationCoordinate2D следующим образом:

CLLocationCoordinate2D pathCoords[5]={
    CLLocationCoordinate2DMake(27.7231737704478,-71.4826609644423),
    CLLocationCoordinate2DMake(27.7231120144099,-71.4826608497223),
    CLLocationCoordinate2DMake(27.7228678610506,-71.4826391681679),
    ...
    CLLocationCoordinate2DMake(27.7225217655116,-71.482414263977),
};

Любые предложения по кодированию приветствуются. Спасибо!

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Я предполагаю, что вы уже создали структуру CLLocationCoordinate2D с именем pathCoords размера 5.

for(int i=0;i<[path count]/2;i++)
   pathCoords[i] = CLLocationCoordinate2DMake([path objectAtIndex:2*i+1], [path objectAtIndex:2*i]);

Природа вашей проблемы не рекурсивна, поэтому, если вы идете рекурсивно - этоизлишество.

0 голосов
/ 30 января 2012

Окончательное решение, включающее типизацию NSDecimalNumbers для двойных значений:

for(int i=0; i<[path count]/2; i++) {
        pathCoords[i] = CLLocationCoordinate2DMake([[path objectAtIndex:2*i+1] doubleValue], [[path objectAtIndex:2*i] doubleValue]);
...