在方法中使用闭包
2016-04-13 13:30
337 查看
以网络请求为例
使用:
一个闭包,传递结果
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 } }
相关文章推荐
- 深入理解PHP之匿名函数
- Apple Swift学习教程
- 最后一次说说闭包
- 介绍 Fedora 上的 Swift
- Ruby中使用Block、Proc、lambda实现闭包
- LUA中的闭包(closure)浅析
- Lua中的闭包学习笔记
- C#中函数的创建和闭包的理解
- 深入理解javascript作用域和闭包
- javascript作用域和闭包使用详解
- 谈谈JavaScript中的函数与闭包
- 细品javascript 寻址,闭包,对象模型和相关问题
- JavaScript中的闭包原理分析
- 浅谈javascript中的闭包
- 学习javascript的闭包,原型,和匿名函数之旅
- javascript 闭包详解
- JavaScript 匿名函数和闭包介绍
- JavaScript 闭包深入理解(closure)
- 深入理解JavaScript 闭包究竟是什么