栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从Alamofire回报价值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从Alamofire回报价值

正如mattt指出的那样,Alamofire通过“完成处理程序”模式异步返回数据,因此您必须执行相同的操作。您不能只是

return
立即获取值,而是要更改方法以不返回任何内容,而要使用完成处理程序关闭模式。

如今,它可能看起来像:

func getOrders(completionHandler: @escaping (Result<[String: Any]>) -> Void) {    performRequest("orders", completion: completionHandler)}func performRequest(_ section: String, completion: @escaping (Result<[String: Any]>) -> Void) {    let url = baseURL.appendingPathComponent(section)    let params = ["consumer_key": "key", "consumer_secret": "secret"]    Alamofire.request(url, parameters: params)        .authenticate(user: consumerKey, password: consumerSecret)        .responseJSON { response in switch response.result { case .success(let value as [String: Any]):     completion(.success(value)) case .failure(let error):     completion(.failure(error)) default:     fatalError("received non-dictionary JSON response") }    }}

Then, when you want to call it, you use this

completion
closure parameter
(in trailing closure, if you want):

api.getOrders { result in    switch result {    case .failure(let error):        print(error)    case .success(let value):        // use `value` here    }}// but don't try to use the `error` or `value`, as the above closure// has not yet been called//


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号