使用故障保险箱将数据提取到UITableView中

时间:2012-10-15 10:55:08

标签: ios uitableview

我正在使用NSURLConnection和NSHTTPURLResponse从API获取数据,但如果没有返回数据,我不确定显示错误的最佳(或好)方法。就像现在一样,我只是没有展示任何东西。基本上只是将UITableView数据源设置为nil。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSHTTPURLResponse* urlResponse = nil;
    NSError *error = [[NSError alloc] init];
    NSURLRequest *seriesReq = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://url/"]];
    NSData *responseData = [NSURLConnection sendSynchronousRequest:seriesReq returningResponse:&urlResponse error:&error];

    dispatch_async(dispatch_get_main_queue(), ^{
        if([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) {
            NSError *error;

            seriesJson = [NSJSONSerialization
                          JSONObjectWithData:responseData
                          options:NSJSONReadingMutableContainers
                          error:&error];

            [_seriesTableView reloadData];
        }
        else {
            seriesJson = nil;
        }
    });
});

我想的可能只是用一个虚拟数据集填充seriesJson,然后检查- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath内部是否能够显示它,但由于某种原因它不会让我成为一个好的解决方案。

如何向用户显示请求的数据为空或不可用?

1 个答案:

答案 0 :(得分:0)

取决于您希望用户对您提供的信息做些什么。如果您只是想通知他们存在错误(并且没有追索权),那么在导航栏上设置提示可能就足够了。如果用户可以采取行动,那么带有重试按钮(或其他)的UIAlert可能是合适的。