最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift利用AFN實現(xiàn)封裝網(wǎng)絡(luò)請求詳解

 更新時間:2017年10月26日 10:42:28   作者:Mazy_ma  
網(wǎng)絡(luò)請求工具是我們經(jīng)常用到的工具類,所以下面這篇文章主要給大家介紹了關(guān)于Swift利用AFN如何實現(xiàn)封裝網(wǎng)絡(luò)請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

相信大家都知道,我們一般在一個項目中,網(wǎng)絡(luò)請求都封裝成一個單例,以確保整個項目的網(wǎng)絡(luò)請求 Session 是同一個.

單例模式定義:一個類有且僅有一個實例,并且自行實例化向整個系統(tǒng)提供,下面話不多說了,來一起看看詳細的介紹吧。

通過cocoaPods 導(dǎo)入第三方框架

01-切換到項目目錄

cd 項目名稱

02-初始化Pods

pod init

03-打開 Pods 文件

open Podfile

04-編輯 Podfile

# 設(shè)置支持最低平臺
platform :ios, '8.0'

target 'TestSwiftMixAFN' do
 # 如果是Swift項目,需添加"use_frameworks!"
 use_frameworks!
pod "AFNetworking"

end

05-安裝 Pods

pod install

封裝AFN網(wǎng)絡(luò)請求工具

1 創(chuàng)建一個工具類, 繼承自 AFHTTPSessionManager

import AFNetworking

class XMSessionManager: AFHTTPSessionManager {
 // ...
}

2 通過單例創(chuàng)建一個AFHTTPSessionManager 實例

/// 創(chuàng)建網(wǎng)絡(luò)請求單例
static let shared: XMSessionManager = XMSessionManager()

----------------------------------------------------------------
/// 如果需要設(shè)置請求的屬性,可在閉包中添加
/// 在第一次訪問時,執(zhí)行閉包,并且將結(jié)果保存在 shared 常量中
 static let shared1: XMSessionManager = {

  // 實例化對象
  let manager = XMSessionManager()

  // 設(shè)置響應(yīng)反序列化支持的數(shù)據(jù)類型
  manager.responseSerializer.acceptableContentTypes?.insert("text/plain")

  // 返回對象
  return manager
 }()

3 通過枚舉, 添加HTTP請求方法(GET/POST)

/// 枚舉-請求方法
///
/// - GET: GET
/// - POST: POST
enum XMHTTPMethod {
 case GET
 case POST
}

4 自定義網(wǎng)絡(luò)請求方法,通過閉包回調(diào)請求完成后的數(shù)據(jù)

/// 封裝網(wǎng)絡(luò)請求方法
 ///
 /// - Parameters:
 /// - Method: GET/POST, 默認是GET請求
 /// - URLString: 請求地址
 /// - parameters: 參數(shù)
 /// - completed: 結(jié)束回調(diào)
 func request(Method:XMHTTPMethod = .GET, URLString: String,parameters: [String: AnyObject]?, completed:@escaping ((_ json: AnyObject?, _ isSuccess: Bool)->())) {

  /// 定義成功回調(diào)閉包
  let success = { (task: URLSessionDataTask,json: Any?)->() in
   completed(json as AnyObject?,true)
  }

  /// 定義失敗回調(diào)閉包
  let failure = {(task: URLSessionDataTask?, error: Error)->() in
   completed(nil,false)
  }

  /// 通過請求方法,執(zhí)行不同的請求
  // 如果是 GET 請求
  if Method == .GET { // GET

   get(URLString, parameters: parameters, progress: nil, success: success, failure: failure)

  } else { // POST

   post(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
  }
 }

5 網(wǎng)絡(luò)請求工具的使用

///GET 請求
  XMSessionManager.shared.request(URLString: "http:xxx", parameters: nil, completed:{(json: AnyObject?,isSuccess: Bool)-> () in

   // 請求成功
   if isSuccess {
    print(json ?? "")
   } else {
    print("請求失敗")
   }
  })


///POST 請求
  XMSessionManager.shared.request(URLString: "www.xxx.xxx", parameters: ["key":"value" as AnyObject], completed:{(json: AnyObject?,isSuccess: Bool)-> () in
   // 請求成功
   if isSuccess {
    print(json ?? "")
   } else {
    print("請求失敗")
   }
  })

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:

相關(guān)文章

  • Swift學(xué)習(xí)筆記之元組(tuples)

    Swift學(xué)習(xí)筆記之元組(tuples)

    這篇文章主要給大家介紹了Swift中元組(tuples)的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 利用swift實現(xiàn)卡片橫向滑動動畫效果的方法示例

    利用swift實現(xiàn)卡片橫向滑動動畫效果的方法示例

    卡片橫向滑動動畫效果相信對大家來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于利用swift實現(xiàn)卡片橫向滑動動畫效果的方法示例,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • Swift?reduce函數(shù)使用示例詳解

    Swift?reduce函數(shù)使用示例詳解

    這篇文章主要為大家介紹了Swift?reduce函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Swift自動調(diào)整視圖布局AutoLayout和AutoresizingMask功能詳解

    Swift自動調(diào)整視圖布局AutoLayout和AutoresizingMask功能詳解

    這篇文章主要為大家介紹了Swift自動調(diào)整視圖布局AutoLayout和AutoresizingMask功能及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Swift編程中用以管理內(nèi)存的自動引用計數(shù)詳解

    Swift編程中用以管理內(nèi)存的自動引用計數(shù)詳解

    這篇文章主要介紹了Swift編程中用以管理內(nèi)存的自動引用計數(shù)詳解,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • RxSwift學(xué)習(xí)教程之基礎(chǔ)篇

    RxSwift學(xué)習(xí)教程之基礎(chǔ)篇

    RxSwift是Swift函數(shù)響應(yīng)式編程的一個開源庫,由Github的ReactiveX組織開發(fā),維護。下面這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)之基礎(chǔ)篇的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Swift協(xié)議Protocol介紹

    Swift協(xié)議Protocol介紹

    協(xié)議規(guī)定了用來實現(xiàn)某一特定功能所必需的方法和屬性。任意能夠滿足協(xié)議要求的類型被稱為遵循(conform)這個協(xié)議。類,結(jié)構(gòu)體或枚舉類型都可以遵循協(xié)議,并提供具體實現(xiàn)來完成協(xié)議定義的方法和功能
    2022-08-08
  • Swift 3.0基礎(chǔ)學(xué)習(xí)之下標

    Swift 3.0基礎(chǔ)學(xué)習(xí)之下標

    這篇文章主要介紹了Swift 3.0基礎(chǔ)學(xué)習(xí)之下標的相關(guān)資料,文中介紹的非常詳細,對大家學(xué)習(xí)或者使用swift具有一定的參考價值,需要的朋友下面來一起看看吧。
    2017-03-03
  • swift 字符串String的使用方法

    swift 字符串String的使用方法

    這篇文章主要介紹了swift 字符串String的使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Swift利用Decodable解析JSON的一個小問題詳解

    Swift利用Decodable解析JSON的一個小問題詳解

    這篇文章主要給大家介紹了關(guān)于Swift利用Decodable解析JSON的一個小問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04

最新評論

泸溪县| 磐安县| 杭锦后旗| 昌邑市| 乐平市| 中超| 辽中县| 关岭| 阿巴嘎旗| 黔西县| 鄢陵县| 太仓市| 子长县| 蕉岭县| 缙云县| 内乡县| 新巴尔虎左旗| 浦江县| 饶河县| 阜新市| 利辛县| 江门市| 砀山县| 广河县| 如东县| 宁远县| 冕宁县| 临泉县| 论坛| 达拉特旗| 兴隆县| 元氏县| 邵武市| 拜泉县| 芒康县| 万宁市| 博乐市| 岳池县| 盖州市| 霞浦县| 郧西县|