當前位置:成語大全網 - 書法字典 - 如何在Swift中使用AFNetworking

如何在Swift中使用AFNetworking

在項目中隨意創建壹個類,並選擇語言oc。我們會發現項目中會添加壹個SwiftStudy-Bridging-Header.h文件,創建的OC類會被刪除並在此引入。

//

//RequestClient.swift

//快速研究

//

//已創建?被誰?楊文德?開?15/8/19.

//版權?c)?2015?楊文德。全部?權利?保留。

//

進口?UIKit

班級?請求客戶端:?AFHTTPSessionManager?{

班級?var?共享實例?:請求客戶端?{

結構?靜電?{

靜電?var?onceToken:dispatch_once_t?=?0

靜電?var?實例:RequestClient=?無

}

dispatch _ once(& amp;Static.onceToken,{?()?-& gt;?虛空?在

//字符串只需填寫對應的baseUrl。

var?url:NSURL?=?NSURL(弦樂:?"")!

靜態實例?=?request client(base URL:網址)

})?

//返回此類的實例。

回歸?靜態實例!

}

}

使用RequestClient實例,我們可以打包文章、獲取和上傳圖像文件。

OC中的AFNetworking習慣使用block來傳輸數據,而在Swift中我們使用閉包來傳輸數據。

這是我的文件目錄。

Swift研究項目目錄。

AppDelegate.swift

myViewController.swift

ViewController.swift

網絡?-網絡相關。

請求客戶端。swift

RequestAPI.swift

自定義VC-VC的包裝,

CostomNavigationVC.swift

BaseViewController.swift

接下來,看看函數的內部實現。我們定義兩個變量來接收傳遞的函數指針,通過它可以返回數據。Swift和Objective-C之間最大的區別是使用了。語法。請繼續閱讀。

通過RequestClient.sharedInstance,我們可以得到RequestClient的壹個實例,這是swift中singleton模式的使用。回來看看RequestClient.swift

然後我們開始真正的網絡請求,調用AFHTTPSessionManager的PUT方法。

1

2

request client . shared instance . get(URL,?參數:?身體?成功:?{?(任務:NSURLSessionDataTask!,?響應對象:任何對象!)?在

我的成功(任務,響應對象)

})?{?(任務:NSURLSessionDataTask!,?錯誤:NSError!)?在

我的失敗(任務,錯誤)

}

依次填入相應的參數,我們壹起來看看。

1

2

成功:?{?(任務:NSURLSessionDataTask!,?響應對象:任何對象!)?-& gt;?虛空?在

我的成功(任務,響應對象)

})

這是壹個標準的閉包,(task:NSURLSessionDataTask!,響應對象:AnyObject!)-》;Void是不是感覺很熟悉?這是我們最初定義的成功,妳可以從中再次學習。

介紹了閉包的表達式編寫方法。

1

2

{?(參數)?-& gt;?returnType?在

聲明

}

閉包的具體操作請見“/cpp/html/2285.html”。

在閉包函數中,我們可以獲得服務器返回的數據。在函數的開始,我們已經接受了外部函數指針,通過它我們可以將值傳遞回來。

/**

request client . shared instance . request serializer?=?AFJSONRequestSerializer()

request client . shared instance . response serializer?=?AFJSONResponseSerializer()

request client . shared instance . request serializer . setvalue(“application/JSON,text/html“,?forHTTPHeaderField:?“接受”)

request client . shared instance . request serializer . setvalue(“application/JSON;?charset=utf-8“,?forHTTPHeaderField:?“內容類型”)

*/