在方法中使用闭包

以网络请求为例

class func httpRequest( // 类方法
    type: RequestMethodType,
    url:String,
    params: NSDictionary,
    success: ((response: AnyObject)->Void), // 成功的闭包,参数是response,没有返回值,Void大写
    failure: ((error: NSError)->Void)) {

    let manager = AFHTTPRequestOperationManager()

    switch type {
    case .Get:

        manager.GET(url, parameters: params, success: { (operation: AFHTTPRequestOperation!,  responseObject: AnyObject!) in

                success(response: responseObject) // 响应数据

            }, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in

                failure(error: error) // 失败信息
        })
        break

    case .Post:
        manager.POST(url, parameters: params, success: { (operation: AFHTTPRequestOperation!,  responseObject: AnyObject!) in
            success(response: responseObject)

            }, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
                failure(error: error)
        })
        break

    }
}

使用:
一个闭包,传递结果

func getUser(userId: String, completion:((User?) -> Void)) { // 不带参数
    let user = User()

    let parameters: NSDictionary = [
        "search_user": userId
    ];

    // 使用网络请求
    HttpTool.httpRequest(RequestMethodType.Get, url: kHttpUserInfo, params: parameters, success: { (response) in
        let arr = response as! NSArray
        if arr.count >= 1 {
            let dic = arr[0] as! NSDictionary
            user.userId = dic["user_id"] as! String
            user.portrait = dic["portrait"] as! String
            user.signature = dic["signature"] as! String
            user.username = dic["username"] as! String
            user.sex = dic["sex"] as! String
            completion(user) // 不带参数。请求完成,传递user
        }
        }) { (error) in
            completion(nil) // 如果错误,设置为nil
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值