Получение и ошибка без ошибок - PullRequest
0 голосов
/ 09 декабря 2011

По какой-то причине я получаю сообщение об ошибке, когда ошибки не возникает, когда я 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.

Есть идеи?

Ответы [ 3 ]

7 голосов
/ 09 декабря 2011

Не проверяйте NSError объекты, чтобы определить, произошла ли ошибка.По соглашению вы должны проверять возвращаемое значение метода, который сгенерировал ошибку.Если результат равен nil или NO, только тогда следует продолжить проверку ошибки.Кроме того, вы не проверяете объект ошибки, вы проверяете действительность адреса в памяти объекта ошибки.

В вашем случае, приступайте к проверке ошибки, только если urlData равно nil.

0 голосов
/ 09 декабря 2011

Инициализируйте ошибку до нуля:

NSError * error = nil;

и когда вы хотите посмотреть на ошибку, выполните:

if(error)
{
    //Handle Error
0 голосов
/ 09 декабря 2011

Проблема в том, что вы проверяете адрес объекта ошибки.Вам нужно проверить сам объект.

if (error != nil)

вместо

if (&error)

Последняя форма оценивает адрес объекта ошибки, который будет ненулевым, поэтому ваше условие ошибки всегда будетзапустить.

(И не забудьте заранее установить значение ошибки в nil).

...