Swift之AFN封装

看着视频敲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是空,原因我不知道,等我明白了,我在练练解释解释!

你可能感兴趣的:(Swift之AFN封装)