博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[swift]-AFNetworking网络封装
阅读量:6895 次
发布时间:2019-06-27

本文共 2545 字,大约阅读时间需要 8 分钟。

  hot3.png

1:定义一个网络工具类,如HttpTools,NetworkTools等等

在NetworkTools.swift类中:

这里采用单例封装:

import AFNetworking// 枚举方式1enum RequestType {    case GET    case POST}// 枚举方式2enum RequestType1 : Int {    case GET = 0    case POST = 1}// 枚举方式3enum RequestType2 : String {    case GET = "GET"    case POST = "POST"}class NetworkTools: AFHTTPSessionManager {    /// let是线程安全的    static let shareInstance : NetworkTools = {       let tools = NetworkTools()        tools.responseSerializer.acceptableContentTypes?.insert("text/html")        return tools    }()}// MARK: - 封装请求方法extension NetworkTools {    func request(methodType : RequestType, urlString : String, parameters : [String : AnyObject], finished:(result : AnyObject?,error : NSError?) -> ()) {                // 定义成功的回调闭包:使用一个常量来接收它        let successCallBack = { (task : NSURLSessionDataTask, result : AnyObject?) in            finished(result: result, error: nil)        }                        // 定义一个失败的回调闭包:使用一个常量来接收它        let failureCallBack = { (task : NSURLSessionDataTask?, error : NSError) in            finished(result: nil, error: error)        }            // 发送网络请求        if methodType == .GET {            GET(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)        }else {            POST(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)        }    }}

 

 

2:在viewController.swift中调用网络请求接口

class ViewController: UIViewController {    override func viewDidLoad() {        super.viewDidLoad()        //print(NetworkTools.shareInstance)        //print(NetworkTools.shareInstance)    }        override func touchesBegan(touches: Set
, withEvent event: UIEvent?) { /// 外面请求接口回调 NetworkTools.shareInstance.request(.POST, urlString: "http://httpbin.org/post", parameters: ["name" : "lishengbing","age" : 106]) { (result, error) in if error != nil { print(error) return } print(result) } } }

 

 

知识点:

1:swift中创建单例:

class NetworkTools: AFHTTPSessionManager {    /// let是线程安全的    static let shareInstance : NetworkTools = {       let tools = NetworkTools()        return tools    }()}

2:swift中枚举的定义:

// 枚举方式1enum RequestType {    case GET    case POST}// 枚举方式2enum RequestType1 : Int {    case GET = 0    case POST = 1}// 枚举方式3enum RequestType2 : String {    case GET = "GET"    case POST = "POST"}

 

 

意见反馈邮件:1415429879@qq.com

欢迎你们的阅读和赞赏、谢谢

 

转载于:https://my.oschina.net/shengbingli/blog/725631

你可能感兴趣的文章
截图后粘贴或拖拽上传
查看>>
较为完整的meta
查看>>
对比特币的几点怀疑
查看>>
函数式编程-尾递归、尾调用
查看>>
.Net转Java自学之路—基础巩固篇二十一(模块化思想)
查看>>
1003.Hangover
查看>>
C语言博客作业--嵌套循环
查看>>
HTML与CSS二三事
查看>>
How To Set Up Nginx Server Blocks (Virtual Hosts) on Ubuntu
查看>>
简单钩子
查看>>
常用的php函数库
查看>>
lucene之排序、设置权重、优化、分布式搜索(转)
查看>>
百度地图移动版API 1.2.2版本(Android)地图偏移的最佳解决办法
查看>>
第五周总结
查看>>
spring boot ajax post 前后端
查看>>
作业1测试
查看>>
sqlite3 小结
查看>>
linux 简单命令
查看>>
深入围观MaskEdit组件
查看>>
鱼油账号记录程序
查看>>