0

csv ファイルから座標を取得して、地図上にルートを描画したいと考えています。(The Reluctant Blogger から) 2 つのサンプル コードを作成し、元の csv ファイルでは問題なく動作しましたが、gpx ファイルを csv に変換して (GPSBabelFE を使用して) 使用すると、アプリが次のエラーでクラッシュします。

2013-06-21 02:46:10.606 os4Maps[10178:907] * キャッチされていない例外 'NSRangeException' が原因でアプリを終了しています。理由: '* -[__NSArrayI objectAtIndex:]: 境界を超えたインデックス 1 [0 .. 0]' * First throw call stack: (0x31bbb3e7 0x398b6963 0x31b0621d 0x484af 0x48151 0x339e9579 0x47e81 0x33a2aaa1 0x33a2a625 0x33a22833 0x339cad1f 0x339ca7ad 0x339ca1ef 0x356e25f7 0x356e2227 0x31b903e7 0x31b9038b 0x31b8f20f 0x31b0223d 0x31b020c9 0x33a2146d 0x33a1e2b9 0x47dfd 0x39ce3b20) libc++abi.dylib: terminate called throwing an exception (lldb)

なぜこれが起こっているのか誰か知っていますか?

私はファイルをチェックしましたが、空ではなく、私の意見では問題ありません。

最新のサンプルはこちらから、修正後のcsvファイルはこちらから

ありがとうございました!

4

1 に答える 1

0

コードのどの時点でこれが発生しますか? ブレークポイントを設定しようとしましたか?

リンクされたコードからobjectAtIndex:、for ループ内に が 3 回出現しています。最初のものは問題ないはずですが、それを主張したいかもしれません[latLonArr count] == 2:

NSArray* latLonArr = [currentPointString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]];

assert([latLonArr count] == 2);

CLLocationDegrees latitude = [[latLonArr objectAtIndex:0] doubleValue];
CLLocationDegrees longitude = [[latLonArr objectAtIndex:1] doubleValue];
于 2013-06-21T07:11:36.970 に答える