0

我正在从服务 url 获取 xml 响应,并且我想在网络连接失败时显示错误。所以我显示了 UIAlertView,但是在其余过程完成后,这个 alertView 会显示出来。我希望它立即显示。

在android中,如果网络连接失败,它会显示“不幸的是应用程序名称已终止”的错误警报。iPhone有这样的东西吗?如果不是,我想显示 alertview 并停止其余的过程。

这是我正在处理的代码:

if (responseData!= NULL)
        {
            response = [[NSString alloc] initWithData:responseData 
                                             encoding:NSUTF8StringEncoding ];
            NSLog(@"Response Code:%d",[urlResponse statusCode]);
            if([urlResponse statusCode ]>=200 && [urlResponse statusCode]<300)
            {
                NSLog(@"Response:%@",response);
            } 
        }
        else
        {
            NSLog(@"Failed to send request: %@", [error localizedDescription]);

              UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unfornately  stopped.Try Again " message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
               [alert show];
               [alert release];
        }  

        parser =[[NSXMLParser alloc]initWithData:responseData];
        [parser setDelegate:self];
        [parser setShouldProcessNamespaces:NO];
        [parser setShouldReportNamespacePrefixes:NO];
        [parser setShouldResolveExternalEntities:NO];
        currentHtmlElement=@"1";
        [parser parse];
        [parser release]; 

在我的代码中,如果发送请求失败,则打印 NSLog 并执行 alertView 代码。同时我想停止剩下的过程,即初始化解析器并完成剩下的操作。

我该怎么做?

4

2 回答 2

0

非常简单...将您的解析代码移动到if块内。

    if (responseData!= NULL)
    {
        response = [[NSString alloc] initWithData:responseData 
                                         encoding:NSUTF8StringEncoding ];
        NSLog(@"Response Code:%d",[urlResponse statusCode]);
        if([urlResponse statusCode ]>=200 && [urlResponse statusCode]<300)
        {
            NSLog(@"Response:%@",response);
        }

        parser =[[NSXMLParser alloc]initWithData:responseData];
        [parser setDelegate:self];
        [parser setShouldProcessNamespaces:NO];
        [parser setShouldReportNamespacePrefixes:NO];
        [parser setShouldResolveExternalEntities:NO];
        currentHtmlElement=@"1";
        [parser parse];
        [parser release];
    }
    else
    {
        NSLog(@"Failed to send request: %@", [error localizedDescription]);

          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unfornately iCloudBiz has stopped.Try Again " message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

           [alert show];
           [alert release];
    } 

顺便说一句...您提到您的 Android 应用行为如下

在 android 中,如果网络连接失败,它将显示一个错误警报,即不幸的是应用程序名称已终止。

请理解这种行为是一种异常行为。这称为 CRASH,您应该适当地处理它。如果网络断开,应用程序应显示一条消息而不会终止/崩溃:)

于 2012-12-29T09:33:18.833 回答
0

您应该使用 Reachability 类来检查互联网连接是否可用这是示例代码,以了解它是如何工作的

Reachability *reachability = [Reachability reachabilityForInternetConnection];    
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
if (internetStatus != NotReachable) {
//my web-dependent code
}
else {
//there-is-no-connection warning
}
于 2012-12-29T10:44:54.457 回答