[swift]-AFNetworking网络封装

前端之家收集整理的这篇文章主要介绍了[swift]-AFNetworking网络封装前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

在NetworkTools.swift类中:

这里采用单例封装:

  1. import AFNetworking
  2.  
  3. // 枚举方式1
  4. enum RequestType {
  5. case GET
  6. case POST
  7. }
  8.  
  9. // 枚举方式2
  10. enum RequestType1 : Int {
  11. case GET = 0
  12. case POST = 1
  13. }
  14.  
  15. // 枚举方式3
  16. enum RequestType2 : String {
  17. case GET = "GET"
  18. case POST = "POST"
  19. }
  20.  
  21.  
  22.  
  23. class NetworkTools: AFHTTPSessionManager {
  24.  
  25. /// let是线程安全的
  26. static let shareInstance : NetworkTools = {
  27. let tools = NetworkTools()
  28. tools.responseSerializer.acceptableContentTypes?.insert("text/html")
  29. return tools
  30. }()
  31. }
  32.  
  33. // MARK: - 封装请求方法
  34. extension NetworkTools {
  35. func request(methodType : RequestType,urlString : String,parameters : [String : AnyObject],finished:(result : AnyObject?,error : NSError?) -> ()) {
  36. // 定义成功的回调闭包:使用一个常量来接收它
  37. let successCallBack = { (task : NSURLSessionDataTask,result : AnyObject?) in
  38. finished(result: result,error: nil)
  39. }
  40. // 定义一个失败的回调闭包:使用一个常量来接收它
  41. let failureCallBack = { (task : NSURLSessionDataTask?,error : NSError) in
  42. finished(result: nil,error: error)
  43. }
  44. // 发送网络请求
  45. if methodType == .GET {
  46. GET(urlString,parameters: parameters,progress: nil,success: successCallBack,failure: failureCallBack)
  47. }else {
  48. POST(urlString,failure: failureCallBack)
  49. }
  50. }
  51. }

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

  1. class ViewController: UIViewController {
  2.  
  3. override func viewDidLoad() {
  4. super.viewDidLoad()
  5. //print(NetworkTools.shareInstance)
  6. //print(NetworkTools.shareInstance)
  7. }
  8. override func touchesBegan(touches: Set<UITouch>,withEvent event: UIEvent?) {
  9. /// 外面请求接口回调
  10. NetworkTools.shareInstance.request(.POST,urlString: "http://httpbin.org/post",parameters: ["name" : "lishengbing","age" : 106]) { (result,error) in
  11. if error != nil {
  12. print(error)
  13. return
  14. }
  15. print(result)
  16. }
  17. }
  18.  
  19. }

知识点:

1:swift中创建单例:

  1. class NetworkTools: AFHTTPSessionManager {
  2.  
  3. /// let是线程安全的
  4. static let shareInstance : NetworkTools = {
  5. let tools = NetworkTools()
  6. return tools
  7. }()
  8. }

2:swift中枚举的定义:

  1. // 枚举方式1
  2. enum RequestType {
  3. case GET
  4. case POST
  5. }
  6.  
  7. // 枚举方式2
  8. enum RequestType1 : Int {
  9. case GET = 0
  10. case POST = 1
  11. }
  12.  
  13. // 枚举方式3
  14. enum RequestType2 : String {
  15. case GET = "GET"
  16. case POST = "POST"
  17. }

意见反馈邮件:1415429879@qq.com 欢迎你们的阅读和赞赏、谢谢

猜你在找的Swift相关文章