私は(私にとって)謎のバグのようなものに出くわしました。iPhone SDK でユーザーの現在の場所を選択するコードがいくつかあります。iPhoneシミュレーターでは問題なく動作するのですが、実機で実行しようとすると変なエラーが出ます。
コードは次のとおりです (私は ASIFormDataRequest を使用して POST 要求を作成しています)。
ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"testauthor" forKey:@"author"];
[request setPostValue:[[NSNumber numberWithDouble:datum.location.coordinate.latitude] stringValue] forKey:@"latitude"];
NSLog(@"%f", datum.location.coordinate.latitude);
NSLog(@"%f", datum.location.coordinate.longitude);
[request setPostValue:[[NSNumber numberWithDouble:datum.location.coordinate.longitude] stringValue] forKey:@"longitude"];
[request setPostValue:datum.comment forKey:@"comment"];
シミュレーターでは、NSLog は緯度と経度の両方を記録しますが、iPhone では記録しません。
さらに奇妙なことに、デバイスでデバッガーを使用すると、「po datum.location」を試してみると、
<+###, -###> +/- 223.10m (speed 0.00 mps / course -1.00) @ 2010-05-02 22:18:37 -0400
(### は私の場所に置き換えられます) しかし、「(gdb) po datum.location.coordinate」を実行すると、次のようになります。
There is no member named coordinate.
なぜこれが起こるのか分かりますか?よろしくお願いします。