目前在自己写点小东西,来学习swift3.0
发现巨坑.基于一个webView 的API 看底层API 研究了好久才写出来
有点恶心啊,代码虽然不难,但是API的改变着实头疼,相信OC 更是蒙的一塌糊涂
正题:
放出自己简单的一个小封装
网上也找过,不如自己动手来得舒坦,所以就自己写了一下
@escaping 这个注解 目前还在学习当中,在swift2.0中的作用和swift3.0中是如何使用的,有哪些变化.也希望大神能指点一二.
import UIKit
import AFNetworking
enum HTResqustMethod : String {
case Post = "post"
case Get = "get"
}
class NetworkTools: AFHTTPSessionManager {
static let shardTools : NetworkTools = {
let tools = NetworkTools()
tools.responseSerializer.acceptableContentTypes?.insert("text/html")
tools.responseSerializer.acceptableContentTypes?.insert("text/plain")
return tools
}()
func request(method: HTResqustMethod , urlString: String, parameters: AnyObject?,resultBlock : @escaping([String : Any]?, Error?) -> ()){
// 定义一个请求成功之后要执行的闭包
// 成功闭包
let successBlock = { (task: URLSessionDataTask, responseObj: Any?) in
resultBlock(responseObj as? [String : Any], nil)
}
// 失败的闭包
let failureBlock = { (task: URLSessionDataTask?, error: Error) in
resultBlock(nil, error)
}
// Get 请求
if method == .Get {
get(urlString, parameters: parameters, progress: nil, success: successBlock, failure: failureBlock)
}
// Post 请求
if method == .Post {
post(urlString, parameters: parameters, progress: nil, success: successBlock, failure: failureBlock)
}
}
}
这里是调用
NetworkTools.shardTools.request(method: .Post, urlString: urlString, parameters: params as AnyObject?) { (responseObject, error) in
if error != nil {
print(error!)
return
}
guard (responseObject as? [String : AnyObject]) != nil else{
return
}
print(responseObject!)
}