将值数组放入CLLocationCoordinate2D的优雅方法

时间:2012-01-30 03:36:09

标签: objective-c ios ios5 nsarray core-location

是否有一种优雅的方法可以从NSDecimalNumber值数组创建CLLocationCoordinate2D对象?也许是一个递归函数?

我是目标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 个答案:

答案 0 :(得分:4)

我假设您已经创建了一个名为CLLocationCoordinate2D的{​​{1}}结构,其大小为5。

pathCoords

你问题的本质不是递归的,所以如果你去递归 - 那就太过分了。

答案 1 :(得分:0)

最终解决方案包括将NSDecimalNumbers类型转换为doubleValues:

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