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

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

【问题讨论】:

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

标签: ios objective-c json uialertview


【解决方案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 服务调用的其他控制器,您可以在那里设置成功块并传递标头字典
猜你喜欢
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多