获取 JSON 失败时的 UIAlertView [重复]

Posted

技术标签:

【中文标题】获取 JSON 失败时的 UIAlertView [重复]【英文标题】:UIAlertView for when fetching JSON fails [duplicate] 【发布时间】:2015-06-29 18:00:59 【问题描述】:

当获取 JSON 数据失败时,我试图让这个 UIAlertView 运行,但我似乎无法让它工作。如果有人能告诉我如何做或指出正确的方向,我将不胜感激!

【问题讨论】:

失败怎么办?提供有关实际发生的情况与您期望发生的情况的更多详细信息。 另请注意,您必须在主线程上执行 UI 工作。 检查响应对象标头。在那检查状态代码.200 或 400 或其他任何内容并采取相应措施 如果它无法获取 JSON 的内容(不是已经由完成/失败块解释的基本失败)。 self.jobs != nil 没有做任何事情。当我注释掉“self.jobs = (NSArray *)responseObject;”这一行时,它可以工作,但是当我把它放在那里并且它失败时,什么也没有发生。 #Jgreen727。检查您的 responseObject 数据类型。是 NSArray 还是其他什么?像NSDictionary?可能 typeCasting 会失败。 【参考方案1】:

我想你忘记写失败块了。

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
[operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"success: %@", operation.responseString);
 
    failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"error: %@",  operation.responseString);
];

希望这会对你有所帮助。

【讨论】:

我已经有一个失败块,我只是没有在这里添加它,因为它无关紧要!失败/成功块仅考虑基本错误。 好的,刚刚检查了您的评论。在您的问题下方查看我的评论。【参考方案2】:

你可以把这个写在你的块里

NSDictionary *headersCollection=[[(NSDictionary *)operation valueForKey:@"response"]valueForKey:@"allHeaderFields"];
NSMutableDictionary *headers=[headersCollection mutableCopy];
headers[@"statusCode"]=[NSNumber numberWithInteger:operation.response.statusCode];

然后检查状态码值。 Headers 字典将为您提供返回的完整标题。如果 statuscode 为 200 一切正常,否则您可以使用不同的状态码值(例如 400、415 等)相应地显示您的自定义消息

【讨论】:

这和问题有什么关系? 当你得到标题和状态码时你可以做任何事情。正如在问题中没有提到 json 是如何失败的。它在任何情况下都可能失败。其次,如果您想将此标头字典传递给正在执行 Web 服务调用的其他控制器,您可以在那里设置成功块并传递标头字典

以上是关于获取 JSON 失败时的 UIAlertView [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 AFHTTPRequestOperation 失败时显示 UIAlertView

在委托中显示 UIAlertView 失败

进行“点击获取openid”测试失败时的处理

在 IE 上获取图像加载时的图像宽度失败

如何更改 UIAlertView 按钮的宽度?

RestSharp:从结果中获取空值。调试结果时的数据虽然返回了 JSON