首先用桥接或pods将AFNetworking导入项目,在这不再赘述,然后创建一个单例NetWorkTools.swift
继承:AFHTTPSessionManager
import AFNetworking
//单例
static let tools: NetworkTools = {
let baseUrl = NSURL(string: "https://xxx.xxx.xxx/")
let tools = NetworkTools(baseURL: baseUrl)
//设置AFN能够接收的数据类型
tools.responseSerializer.acceptableContentTypes = NSSet(objects:"application/json","text/json","text/javascript","text/plain") as? Set<String>
return tools
}()
//提供类方法获取单例
class func shareNetworkTools() -> NetworkTools {
return tools
}
请求数据
class func loadData(finished: (models:[User]?,error: NSError?) -> ()) {
let path = "baseUrl要拼接的路径"
let params = ["userId": userId]
NetworkTools.shareNetworkTools().GET(path,parameters: params,progress: { (_) -> Void in
},success: { (_,JSON) -> Void in
//打印请求数据
print(JSON)
//在这里将字典转模型
//通过闭包将请求下来的数据传递给调用者
finished(models: models,error: nil)
}) { (_,error) -> Void in
print(error)
//通过闭包吧错误信息传递给调用者
finished(models: nil,error: error)
}
}
调用的地方
Request.loadData { (models,error) -> () in
if error != nil {
return
}
//打印数据模型
printf(models)
}