2009-03-03 4 views
5

HTTP接続が失敗したときに例外を処理するコードを書きたいと思います。私は次のコードを使用します:iPhoneでHTTP接続が失敗したときに警告を表示するにはどうすればいいですか?

-(void) connection:(NSURLConnection *)connection 
    didFailWithError: (NSError *)error { 
    UIAlertView *errorAlert = [[UIAlertView alloc] 
        initWithTitle: [error localizedDescription] 
        message: [error localizedFailureReason] 
        delegate:nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [errorAlert show]; 
    [errorAlert release]; 
    [activityIndicator stopAnimating]; 
    NSLog (@"Connection Failed with Error"); 
} 

しかし、接続が失敗するとプログラムがクラッシュします。プログラムのクラッシュなくアラートをポップアップさせるにはどうすればいいですか?

+0

これはメインスレッドまたはバックグラウンドスレッドで実行されていますか?バックグラウンドスレッドでUI *オブジェクトを操作することは機能しません。それを超えて、クラッシュはどのラインで起きますか?デバッガを使用するか、NSLog行を移動して調べてください。 –

答えて

3

コードに間違いはありません。詳しい情報を入力する必要があります。

breakpoint on objc_exception_throwがあることを確認してから、デバッガでプログラムを実行してください。次に、例外がスローされた行を特定することができます。

おそらく[error localizedDescription]または[error localizedFailureReason]は野生のものですが、nilが返されます。

+0

間違ったURLを使用すると、メソッドdidFailWithErrorが呼び出されませんでした。これがどうして起こるのか? –

+0

おそらくそれは失敗していませんか?サーバーからの応答を受け取った場合、それが404 Not Found応答であっても、その数は成功とみなされます。 – benzado

+0

間違ったURLを使用していませんか?その後、間違ったURLの警告を追加する方法は?どの方法を使用すべきですか? –

関連する問題