出于某种原因,当我执行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
。
有什么想法吗?
答案 0 :(得分:7)
请勿检查NSError
个对象以确定是否发生了错误。按照惯例,您应该检查生成错误的方法的返回值。如果结果为nil
或NO
,则应该继续检查错误。此外,您没有检查错误对象,而是检查错误对象的内存中地址的有效性。
在您的情况下,只有urlData
为nil
时才会继续检查错误。
答案 1 :(得分:-1)
问题是你正在检查错误对象的地址。你需要检查对象本身。
if (error != nil)
而不是
if (&error)
后一种形式评估错误对象的地址,该地址将非零,因此您的错误条件将始终运行。
(并且不要忘记事先将错误值设置为nil。)
答案 2 :(得分:-1)
首先将错误初始化为nil:
NSError * error = nil;
如果您想查看错误,请执行以下操作:
if(error)
{
//Handle Error