swift 网络请求中的异步 我怎么让我拿到了值在值行下面代码

xiachao2008 2016-02-27 05:20:14
swift 网络请求中的异步 我怎么让我拿到了值在值行下面代码
现在问题是还没有请求值没回来 程序就终止了 我想把请求回来的值为外面调用
现在代码是这样的




var resultstr: String?
Alamofire.request(.GET, "http://app.xx.com/api/index.php/Log/register/data/",parameters: jsonObject)
.responseString {response in
if let json = response.result.value {
let resultstr = json

debugPrint(resultstr)

print("a");
}
}
print("b");
debugPrint(resultstr)



现在是先打印的b 在打印的a
我实际上想先执行a 在执行b 把得到的值在运用到其它地方
因为上一代码是另一个方法的回调 所以当b下面的处理方法放到 Alamofire 内 那外层的回调又要报错(因为程序执行到b就完成了)
...全文
711 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiachao2008 2016-09-17
  • 打赏
  • 举报
回复
引用 8 楼 u011332495 的回复:
楼主解决这个问题了么。。
到现在没有解决啊 ,换了N多种方法都不行
wangyili1 2016-07-08
  • 打赏
  • 举报
回复
你这个需要进行信号量的延时处理,不然就没有办法解决
风若有景 2016-05-27
  • 打赏
  • 举报
回复
楼主解决这个问题了么。。
xiachao2008 2016-03-14
  • 打赏
  • 举报
回复
xiachao2008 2016-03-01
  • 打赏
  • 举报
回复
引用 4 楼 github_34124879 的回复:
//将最后两句修改 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ print("b"); debugPrint(resultstr) });



        var resultstr:String=""


        var group:dispatch_group_t  = dispatch_group_create();

        dispatch_group_async(group, dispatch_get_global_queue(0, 0), {

            Alamofire.request(.GET, "http://app.xx.com/api/index.php/Log/register/data/" )
            .responseString {response in
                if let json = response.result.value {
                    let resultstr = json

                    debugPrint(resultstr)

                    print("a");
                }
            }
        });


        dispatch_group_notify(group, dispatch_get_main_queue(), {
            print("b");
            debugPrint(resultstr)
        });

执行的结果还是 b "" "" a
三月江城 2016-03-01
  • 打赏
  • 举报
回复
//将最后两句修改 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ print("b"); debugPrint(resultstr) });
三月江城 2016-03-01
  • 打赏
  • 举报
回复
//使用GCD队列组 dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{ Alamofire.request(.GET, "http://app.xx.com/api/index.php/Log/register/data/",parameters: jsonObject) .responseString {response in if let json = response.result.value { let resultstr = json debugPrint(resultstr) print("a"); } } }); print("b"); debugPrint(resultstr)
xiachao2008 2016-02-29
  • 打赏
  • 举报
回复
引用 1 楼 disburden 的回复:
将外层的回调也放在 Alamofire 内调用
第一个文化的存值的方法 或者同步请求也行
不担心 2016-02-27
  • 打赏
  • 举报
回复
将外层的回调也放在 Alamofire 内调用

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧