美文网首页
Swift之AFN封装

Swift之AFN封装

作者: oh_flying | 来源:发表于2017-06-18 16:17 被阅读89次

    看着视频敲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封装

          本文链接:https://www.haomeiwen.com/subject/vtaiqxtx.html