从Alamofire中得到返回值 分析

本文探讨了在使用Alamofire时,如何处理返回的空JSON值问题。通常需要在response中定义一个闭包completionHandler来处理数据。在Swift中,可以将函数作为参数传递,并在`.Success`状态下调用该函数,改变闭包内的参数值。通过这种方式,可以对传入的completionHandler进行参数赋值,从而获取并处理实际的responseObject和error。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span class="s1" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Alamofire 从githib 的例子上看出来。他不能直接从</span><span class="s2" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">response</span><span class="s1" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">里面得到道返回值,因为运行的时候是异步的</span>

即:结果可能就是在 返回值的时候并没有得到JSON 所以一般的返回的值时空的

所以只能在写一个函数在response里面调用


    func getRequest(mURL:String,params:[String:String],completionHandler: (NSDictionary?, NSError?) -> ()){
        Alamofire.request(.GET,AFHttpConstant.API_SERVER_DOMAIN+mURL,parameters: params)
            .validate()
            .responseJSON { response in
                print(response.request)  // original URL request
                print(response.response) // URL response
                switch response.result {
                case .Success(let data):
                    completionHandler(data as? NSDictionary, nil)
                case .Failure(let error):
                    completionHandler(nil, error)
                }
        }
    }


这里面 在.Success 里调用了函数 completionHandler.

这里面有两个值得注意的地方

1.  completionHandler  是function getRequest 的参数 类型为 (NSDictionary?,NsError?)返回值为()

在swift 里可以把函数当作参数传递进来 此时可以给函数 completionHandler里面的参数赋值 这样 传进来的函数 completionHandler里面的参数就变了。这样也等于给传入的变量赋值了。

2. 传入的是函数必须有函数的格式 (参数)->(返回值)

如何调用呢?

        http.getRequest(URL,params: mParams){
            responseObject, error in
            print("responseObject = \(responseObject); error = \(error)")
            return
        }

 closure的调用方法 变量可以不用声明。最后改变的就是responseObject 和error的值


PS:纯属个人观点有问题一起探讨

参考网页:

http://stackoverflow.com/questions/27390656/how-to-return-value-from-alamofire

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值