美文网首页程序员
Swift 在方法中使用闭包

Swift 在方法中使用闭包

作者: 阳光下慵懒的驴 | 来源:发表于2016-05-13 12:38 被阅读107次

以网络请求为例

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
    }
}


相关文章

  • Swift学习笔记(1)

    SWift学习笔记 闭包 闭包表达式 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 ...

  • swift中的闭包

    swift中的闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用。swift中的闭包与C和Objective...

  • swift 闭包(闭包表达式、尾随闭包、逃逸闭包、自动闭包)

    闭包是自含的函数代码块,可以在代码中被传递和使用 闭包和swift的对比 Swift 中闭包与OC的 block ...

  • Swift5.5学习笔记六:闭包(Closures)

    //闭包(Closures)//闭包是独立的功能块,可以在代码中传递和使用。//Swift中的闭包类似于 C 和 ...

  • Swift闭包和函数

    函数在Swift中只是一种特殊的闭包,闭包在Swift语言中是一等公民,支持闭包嵌套和闭包传递。Swift中的闭包...

  • swift - 闭包基础

    闭包 closure 闭包在Swift中应用广泛,在许多系统库方法中都能看到。 无名本质是函数使用时注意循环引用 ...

  • Swift4 闭包及其应用

    闭包 closure 闭包在Swift中应用广泛,在许多系统库方法中都能看到。 无名 本质是函数 使用时注意循环引...

  • Swift学习:闭包

    本篇将详细总结介绍Swift闭包的用法;闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C...

  • iOS swift 学习(二)

    Swift 闭包闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。Swift 中...

  • Swift 5.1 (7) - 闭包

    Closures:闭包 闭包是独立的函数块,可以在代码中传递和使用。Swift中的闭包类似于C和Objective...

网友评论

    本文标题:Swift 在方法中使用闭包

    本文链接:https://www.haomeiwen.com/subject/crtmrttx.html