2012-01-30 26 views
0

是否有一種優雅的方式可以從NSDecimalNumber值數組中創建CLLocationCoordinate2D對象?也許是遞歸函數?將數組值放入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), 
}; 

歡迎任何編碼建議。 謝謝!

回答

4

我假設你已經創建了一個CLLocationCoordinate2D結構,稱爲大小5.

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

pathCoords你的問題的本質是不遞歸的,所以如果你去遞歸 - 這是矯枉過正。

+0

感謝您的快速反應! 編譯器爲'[path objectAtIndex:2 * i + 1]'返回錯誤: '將'id'傳遞給不兼容類型'CLLocationDegrees'(又名'double')的參數' – nslocum 2012-01-30 03:57:16

+0

那麼,您需要將類型正常。我只是在運行中輸入代碼。您需要將NSDecimalNumber轉換爲double。這(https://www.google.com/search?sourceid=chrome&ie=UTF-8&q=nsdecimalnumber+to+double)將有所幫助。 – Ravi 2012-01-30 04:00:40

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]); 
相關問題