看着视频敲swift,人家封装了一个AFN的方法,我跟着封装,结果出错了,原因我目前还不知道,不过我改了下终于改对了,现在贴出来,以后可以自己用,下面是代码:
import UIKit
import AFNetworking
enum WBHTTPMethod {
case GET
case Post
}
/// 网络管理工具
///单例
class WBNetworkManger: AFHTTPSessionManager {
/// 静态区/常量/闭包/在第一次访问时,执行闭包,并且将结果保存在shared常量中
static let shared = WBNetworkManger()
func request(method:WBHTTPMethod = .GET,URLString:String,parameters:[String:AnyObject],completion:@escaping (_ json:AnyObject?,_ isSucess:Bool)->()) {
//成功回调
let sucess = { (task: URLSessionDataTask, json: Any?) in
completion((json as? [String: Any])! as AnyObject, true)
// print(json)
}
//失败回调
let failure = { (task: URLSessionDataTask?, error:Error) in
print("网络请求 \(error)")
completion(nil, false)
}
if method == .GET {
get(URLString, parameters: parameters, progress: nil, success: sucess, failure: failure)
}else {
post(URLString, parameters: parameters, progress: nil, success: sucess, failure: failure)
}
}
}
这个里面使用单例进行的封装,相比而言swift的单例比OC的要好写的多,然后request
这个函数中我是默认给了GET
的请求方法。我再说说我之前改了哪里,就是把sucess
里面的json
的类型改为了Any?
,期初写的是AnyObject
,然后再下面的if
语句中写的时候,你要穿sucess
的时候,会报错,提示你加入一大串我不理解的东西,加入后不报错,但是就是请求不到数据了,控制台输入的是这样的:
如图,显示的
baseURL
是空,原因我不知道,等我明白了,我在练练解释解释!
网友评论