sjy457346652 2015-08-25 17:27 采纳率: 100%
浏览 2339
已采纳

AFHTTPRequestOperation获取responseObject

@property (nonatomic, strong) NSDictionary *dic;

#pragma mark - 从网络获取json数据

  • (NSDictionary *)getJsonData{

    NSString *urlStr = @"http://api.worldweatheronline.com/free/v2/weather.ashx?q=chengdu&num_of_days=7&format=json&tp=6&key=5fc3a5873e9bdb5bbf8116ea3aac5";
    NSURL *url = [NSURL URLWithString:urlStr];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    //使用AFNetworking解析json数据
    //实例化http操作请求
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    //设定解析器
    operation.responseSerializer = [AFJSONResponseSerializer serializer];

    //下载数据并解析
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    
        //json数据全局化
        self.dic = (NSDictionary *)responseObject;
    
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"解析出错:%@",error);
    }];
    

    });
    [operation start];

    return self.dic;
    }
    我已经提升dic成属性了,为什么返回的self.dic为空?
    个人猜想是跟 block 执行时期有关,希望能有人指点迷津,谢谢!

展开全部

  • 写回答

1条回答 默认 最新

  • LUCKEYMAN 2015-08-25 23:39
    关注

    你这是创建一个分线程去下载数据,但是下载完成后没有刷新主线程。你这边返回的self.dic是肯定是空得。应该是下载完成(下载成功或者失败都是完成)后再返回dic,这才比较合理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部