首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理AFHTTPRequestOperation中的空AFHTTPRequestOperation

如何处理AFHTTPRequestOperation中的空AFHTTPRequestOperation
EN

Stack Overflow用户
提问于 2014-05-09 16:50:44
回答 4查看 748关注 0票数 1

在GET请求期间,我在处理AFHTTPRequestOperation中的空AFHTTPRequestOperation时遇到了问题。我正在使用AFNetworking库。

如果responsteObject的内容是"0对象“,则当我试图访问responseObject中不可用的键时,应用程序会崩溃。我怎样才能优雅地处理这件事?下面是我的代码的样子:

代码语言:javascript
复制
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:requestURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(responseObject[@"NotAvailableKey"];
    }    
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

如果responseObject的内容不是"0对象“,那么代码可以很好地工作。即使我试图访问一个不在responseObject中的密钥。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-09 17:01:50

您的代码崩溃是因为responseObject有时不是在NSDictionary中。所以它对objectForKey:没有反应。您应该检查什么是responseObject类:

代码语言:javascript
复制
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:requestURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    if ([responseObject isKindOfClass:[NSDictionary class]]
    {
         NSLog(responseObject[@"NotAvailableKey"]);
    }
    else
    {
         NSLog(@"Incorrect responseObject");
    }
}    
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
票数 1
EN

Stack Overflow用户

发布于 2014-05-09 17:00:20

使用带有responseObject计数的条件

代码语言:javascript
复制
    if ([responseObject count] == 0) {
        //do nothing
        return;
    }
票数 1
EN

Stack Overflow用户

发布于 2014-05-09 17:06:55

在尝试访问键值之前,您可能希望确保您的响应对象是字典。它可能作为一个数组返回,该数组将崩溃,类似于“非键值编码”异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23570031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档