sjy457346652 2015-08-26 01:27 采纳率: 100%
浏览 2338
已采纳

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-26 07:39
    关注

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

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

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!