2012-01-30 11 views
0

NSDecimalNumber値の配列からCLLocationCoordinate2Dオブジェクトを作成するためのエレガントな方法はありますか?おそらく再帰関数ですか?CLLocationCoordinate2Dに値の配列を入れる優雅な方法

私は目的Cには新しく、この問題を抱えています。

以下は、私が作業しているデータ構造の例です。


NSDecimalNumber値の配列:

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

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

戻り

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

私は手動でこのようなCLLocationCoordinate2Dオブジェクトを作成することができ

コーディングの提案は大歓迎です。 ありがとう!

答えて

4

私はあなたがすでにあなたの問題の本質は、再帰的ではありませんので、あなたが再帰的行けばサイズのpathCoords 5.

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

と呼ばCLLocationCoordinate2D構造を作成したと仮定しています - それはやり過ぎだ。

+0

ありがとう! コンパイラが '[path objectAtIndex:2 * i + 1]'のエラーを返しています: ''id 'を互換性のない型' CLLocationDegrees '(別名' double ')のパラメータに渡します。 – nslocum

+0

型をキャストする必要があります正しく。私はちょうどオンザフライでコードを入力しました。 NSDecimalNumberをdoubleに変換する必要があります。これは(https://www.google.com/search?sourceid=chrome&ie=UTF-8&q=nsdecimalnumber+to+double)役立ちます。 – Ravi

0

doubleValuesにNSDecimalNumbersを型キャストなどの最終的な解決策:あなたの迅速な対応のための

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