0

何らかの理由で、を実行したときにエラーが存在しない場合にエラーが発生しますNSURLConnection

NSLog(@"Sending string to server. ID:11118");
    NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSLog(@"Response from server received. ID:11119");
    NSString *responseString = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];

if (&error)
    {
        //Handle Error
        NSLog(@"Error getting a server response! (scm) Error %i: %@", [error code], [error localizedDescription]);
        UIAlertView *theAlert = [[UIAlertView alloc]initWithTitle:@"Error getting a server response!" message:[NSString stringWithFormat:@"Error %i: %@", [error code], [error localizedDescription]] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [theAlert show];
    }

表示と表示でアラートを[error code]表示0しています。[error localizedDescription]Null

何か案は?

4

3 に答える 3

7

NSErrorエラーが発生したかどうかを判断するためにオブジェクトをチェックしないでください。慣例により、エラーを生成したメソッドの戻り値をチェックする必要があります。結果がnilまたはの場合NOにのみ、エラーのチェックに進む必要があります。さらに、エラー オブジェクトをチェックしているのではなく、エラー オブジェクトのメモリ内のアドレスの有効性をチェックしています。

あなたの場合、 の場合にのみエラーの検査に進みurlDataますnil

于 2011-12-08T21:58:31.093 に答える
-1

問題は、エラー オブジェクトのアドレスをチェックしていることです。オブジェクト自体を確認する必要があります。

if (error != nil)

それ以外の

if (&error)

後者の形式は、エラー オブジェクトのアドレスを評価します。これはゼロ以外になるため、エラー条件は常に実行されます。

(そして、事前にエラー値を nil に設定することを忘れないでください)。

于 2011-12-08T21:57:25.210 に答える
-1

最初にエラーを nil に初期化します。

NSError * error = nil;

エラーを確認したい場合は、次のようにします。

if(error)
{
    //Handle Error
于 2011-12-08T21:58:19.750 に答える