注册 登录
主题 : AFNetworking block内的数据怎么向外传递
级别: 新手上路
状态: 连续签到 - [15天]
UID: 634128
精华: 0
发帖: 47
可可豆: 263 CB
威望: 227 点
在线时间: 103(时)
注册时间: 2018-02-08
最后登录: 2018-05-21
0 楼:  发表于: 2018-02-08 22:34    发自: Web Page
来源于 一般提问 分类

AFNetworking block内的数据怎么向外传递   




- (void)viewDidLoad {
    [super viewDidLoad];
    NSError *error;
    AFHTTPSessionManager *Manager =[AFHTTPSessionManager manager];
    NSString *API =@"http://apis.juhe.cn/ip/ip2addr?************";
    [Manager GET:API parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *result =[[responseObject objectForKey:@"result"] objectForKey:@"area"];
        
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"%d",0001);
    }];
     NSLog(@"%@",_str);
    // Do any additional setup after loading the view, typically from a nib.
}


比如上面我调用一个最简单的API,返回数据怎么传输到success block外部。__block修饰过也不行,用gcd的dispatch更新主线程UI也没成功。求大佬解答。
关键词: AFNetWorking
级别: 圣骑士
状态: 连续签到 - [61天]
UID: 510329
精华: 0
发帖: 489
可可豆: 799 CB
威望: 670 点
在线时间: 820(时)
注册时间: 2015-09-30
最后登录: 2018-05-16
1 楼:  发表于: 2018-02-09 09:32    发自: Web Page
回 楼主(ElvisWee) 的帖子
有个简单的方法~
- (void)viewDidLoad {
    [super viewDidLoad];
    NSError *error;
    AFHTTPSessionManager *Manager =[AFHTTPSessionManager manager];
    NSString *API =@"http://apis.juhe.cn/ip/ip2addr?************";
    [Manager GET:API parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        CFRunLoopStop(CFRunLoopGetMain());//先运行
        NSString *result =[[responseObject objectForKey:@"result"] objectForKey:@"area"];

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"%d",0001);
    }];
    CFRunLoopRun();//
    //后运行
    NSLog(@"%@",_str);
    // Do any additional setup after loading the view, typically from a nib.
}
你试试
级别: 侠客
状态: 连续签到 - [56天]
UID: 497805
精华: 0
发帖: 122
可可豆: 525 CB
威望: 442 点
在线时间: 123(时)
注册时间: 2015-08-15
最后登录: 2018-05-21
2 楼:  发表于: 2018-02-09 09:32    发自: Web Page
你写个属性,把返回的值塞到属性里不就好了
级别: 圣骑士
状态: 连续签到 - [61天]
UID: 510329
精华: 0
发帖: 489
可可豆: 799 CB
威望: 670 点
在线时间: 820(时)
注册时间: 2015-09-30
最后登录: 2018-05-16
3 楼:  发表于: 2018-02-09 09:34    发自: Web Page
参数一样用_block修饰
级别: 新手上路
状态: 连续签到 - [15天]
UID: 634128
精华: 0
发帖: 47
可可豆: 263 CB
威望: 227 点
在线时间: 103(时)
注册时间: 2018-02-08
最后登录: 2018-05-21
4 楼:  发表于: 2018-02-09 09:35    发自: Web Page
?? 2 ?(??xx) ?????
?????????
级别: 新手上路
状态: 连续签到 - [15天]
UID: 634128
精华: 0
发帖: 47
可可豆: 263 CB
威望: 227 点
在线时间: 103(时)
注册时间: 2018-02-08
最后登录: 2018-05-21
5 楼:  发表于: 2018-02-09 09:36    发自: Web Page
?? 2 ?(??xx) ?????
_str????.h???????????
级别: 新手上路
状态: 连续签到 - [15天]
UID: 634128
精华: 0
发帖: 47
可可豆: 263 CB
威望: 227 点
在线时间: 103(时)
注册时间: 2018-02-08
最后登录: 2018-05-21
6 楼:  发表于: 2018-02-09 09:47    发自: Web Page
回 1楼(564282030) 的帖子
可以了,谢谢大佬,大佬能不能给个原理解释的链接。
级别: 新手上路
状态: 连续签到 - [15天]
UID: 634128
精华: 0
发帖: 47
可可豆: 263 CB
威望: 227 点
在线时间: 103(时)
注册时间: 2018-02-08
最后登录: 2018-05-21
7 楼:  发表于: 2018-02-09 09:49    发自: Web Page
回 2楼(夕夜xx) 的帖子
_str,就是.h定义的属性,responseObject的解析数据直接用_str接收,忘了改了。
级别: 新手上路
状态: 连续签到 - [15天]
UID: 634128
精华: 0
发帖: 47
可可豆: 263 CB
威望: 227 点
在线时间: 103(时)
注册时间: 2018-02-08
最后登录: 2018-05-21
8 楼:  发表于: 2018-02-09 09:50    发自: Web Page
回 3楼(564282030) 的帖子
试过了,不行的。
级别: 圣骑士
状态: 连续签到 - [61天]
UID: 510329
精华: 0
发帖: 489
可可豆: 799 CB
威望: 670 点
在线时间: 820(时)
注册时间: 2015-09-30
最后登录: 2018-05-16
9 楼:  发表于: 2018-02-09 09:50    发自: Web Page
回 6楼(ElvisWee) 的帖子
其实你就直接查CFRunLoopStop(CFRunLoopGetMain())这个函数就行了
这就是关于runloop的,https://www.jianshu.com/p/140643597652
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部