0

这是我的问题。如果我的应用无法加载远程 JSON 文件,我该如何显示错误?我在我的电脑上关闭了我的 wifi 并在模拟器中运行了应用程序。如果有连接,它 NSLogs 应该显示的消息。我怎样才能解决这个问题?谢谢。

这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *jsonStr = @"http://xxx.com/server.php?json=1";
    NSURL *jsonURL = [NSURL URLWithString:jsonStr];
   // NSData *jsonData = [NSData dataWithContentsOfURL:jsonURL];
   // NSError *jsonError = nil;
    NSURLRequest *jsonLoaded = [NSURLRequest requestWithURL:jsonURL];

    if(!jsonLoaded) {

        UIAlertView *alertView = [[UIAlertView alloc] init];
        alertView.title = @"Error!";
        alertView.message = @"A server with the specified hostname could not be found.\n\nPlease check your internet connection.";
        [alertView addButtonWithTitle:@"Ok"];
        [alertView show];
        [alertView release];
        NSLog(@"No connection, JSON not loaded...");

    }
    else {
        NSLog(@"JSON loaded and ready to process...");
    }
}
4

2 回答 2

1

您的代码只是创建请求。它实际上并没有获取数据。您需要使用NSURLConnection来获取数据。

有多种方法可以获取数据。此示例适用于 iOS 5.0 或更高版本:

NSOperationQueue *q = [[[NSOperationQueue alloc] init] autorelease];
NSURLRequest *jsonRequest = [NSURLRequest requestWithURL:jsonURL];
[NSURLConnection sendAsynchronousRequest:jsonRequest
                                   queue:q
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                           // data was received
                           if (data)
                           {
                               NSLog(@"JSON loaded and ready to process...");
                               // ... process the data
                           }
                           // No data received
                           else
                           {
                               NSLog(@"No connection, JSON not loaded...");
                               // ... display your alert view
                           }
                       }];
于 2012-11-04T15:06:09.067 回答
0

你实际上还没有请求任何东西。阅读此处了解如何提出请求。

基本上,您要做的是实现NSURLConnectionDelegate协议并覆盖connection:didFailWithError:函数以侦听失败事件。

于 2012-11-04T14:50:58.317 回答