import UIKit
import Alamofire
enum MethodType {
case get
case post
}
class NetworkTools {
class func requestData(_ type : MethodType, URLString : String, parameters : [String : Any]? = nil, finishedCallback : @escaping (_ result : Any) -> ()) {
// 1.获取类型
let method = type == .get ? HTTPMethod.get : HTTPMethod.post
// 2.发送网络请求
Alamofire.request(URLString, method: method, parameters: parameters).responseJSON { (response) in
// 3.获取结果
guard let result = response.result.value else {
print(response.result.error)
return
}
// 4.将结果回调出去
finishedCallback(result)
}
}
}
NetworkTools.requestData(.get, URLString: "http", parameters: ["name" : "zhangsan"]) { (result) in
print(result)
}
简单的理解
在封装网络工具类的时候, 我们传进来几个参数, 除了常用的几个值之外, 最后一个就是闭包
闭包是匿名函数, 其实也可以当做一种类型, 可以把它当做Int一样看待, 闭包在创建的过程中, 和创建其他的类型一样, name : Type
- 闭包的name: finishedCallback
- 闭包的类型: () -> ()
- 第一个括号: 形参, 第二个括号: 返回值
- 看看下面的函数, 是不是和函数有点像, 匿名函数嘛, 也就是没有名字的函数喽
在这里提一下函数, 下面是创建的一个函数,
func 函数名(形参列表) -> (返回值) {
}
- 在网络工具类里面, 将result当做参数, 传递给闭包
- 然后当我们调用这个方法时, 该方法的闭包里面, 就会产生这个值