偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何在Swift 中使用AFNetworking

移動(dòng)開發(fā) iOS
這是我的Prodfile文件,cocoapod的使用方法跟使用OC是時(shí)候是一模一樣的,為了方便,我們?cè)诠こ讨须S便創(chuàng)建一個(gè)類,選擇語(yǔ)言O(shè)C,我們會(huì)發(fā)現(xiàn)工程中會(huì)多出來(lái)一個(gè)SwiftStudy-Bridging-Header.h文件,刪除創(chuàng)建的oc類,在這里引入

[[147119]]

蘋果于2014年WWDC發(fā)布Swift全新語(yǔ)言,前不久2.0也正式發(fā)布,作為一個(gè)iOS開發(fā)人員,也一定要跟上節(jié)奏,因此最近在平時(shí)的閑暇時(shí)間,開始把自己做過(guò)的項(xiàng)目嘗試用swift語(yǔ)言寫了一遍,學(xué)習(xí)全新的語(yǔ)法和設(shè)計(jì)模式,由于學(xué)習(xí)Swift的時(shí)間比較短,今天主要簡(jiǎn)單說(shuō)一下如何在Swift工程中使用時(shí)下比較流行的AFNetworking請(qǐng)求框架。

由于目前AFNetworking目前還沒(méi)有Swift版本,因此我們的工程使用cocoapod來(lái)安裝AFNetworking。

這是我的Prodfile文件,cocoapod的使用方法跟使用OC是時(shí)候是一模一樣的,為了方便,我們?cè)诠こ讨须S便創(chuàng)建一個(gè)類,選擇語(yǔ)言O(shè)C,我們會(huì)發(fā)現(xiàn)工程中會(huì)多出來(lái)一個(gè)SwiftStudy-Bridging-Header.h文件,刪除創(chuàng)建的oc類,在這里引入

 

 

 

好了,可以在swift文件使用AFNetworking

  1. platform :ios, '7.0' 
  2. pod 'SDWebImage''~> 3.7.1' 
  3. pod 'CocoaHTTPServer''~> 2.3' 
  4. pod 'RoutingHTTPServer''~> 1.0.0' 
  5. pod 'Masonry''~> 0.6.1' 
  6. pod 'ASIHTTPRequest''~> 1.8.2' 
  7. pod 'MBProgressHUD''~> 0.9.1' 
  8. pod 'AFNetworking''~> 2.5.4' 

在使用OC進(jìn)行項(xiàng)目開發(fā)時(shí),對(duì)AFNetworking做了一層簡(jiǎn)單的外部封裝,今天我們就把它用Swift實(shí)現(xiàn)。

使用過(guò)新版AFNetworking的都知道它有一個(gè)AFHTTPSessionManager,在這里我們繼承AFHTTPSessionManager使用單例模式返回一個(gè)該類的實(shí)例,

來(lái)進(jìn)行網(wǎng)絡(luò)操作在swift中單例的寫法跟OC語(yǔ)法差別很大,Swift語(yǔ)法在這里不多講解,請(qǐng)參考《The Swift Programming Language》,我們來(lái)看下代碼

  1. // 
  2. // RequestClient.swift 
  3. // SwiftStudy 
  4. // 
  5. // Created by 楊雯德 on 15/8/19. 
  6. // Copyright (c) 2015年 楊雯德. All rights reserved. 
  7. // 
  1. import UIKit 
  2. class RequestClient: AFHTTPSessionManager { 
  3.      
  4.    class var sharedInstance :RequestClient { 
  5.        struct Static { 
  6.            static var onceToken:dispatch_once_t = 0 
  7.            static var instance:RequestClient? = nil 
  8.        } 
  9.          
  10.        dispatch_once(&Static.onceToken, { () -> Void in 
  11.          //string填寫相應(yīng)的baseUrl即可 
  12.            var url:NSURL = NSURL(string: "")! 
  13.            Static.instance = RequestClient(baseURL: url) 
  14.        })  
  15.          //返回本類的一個(gè)實(shí)例 
  16.        return Static.instance! 
  17.          
  18.    } 

拿到RequestClient的實(shí)例我們就可以進(jìn)行post、get以及上傳圖片文件的封裝了

在OC中使用AFNetworking習(xí)慣使用block來(lái)進(jìn)行數(shù)據(jù)的傳遞等,在Swift我們使用閉包來(lái)進(jìn)行數(shù)據(jù)的傳輸

這是我的文件目錄

SwiftStudy ------------工程目錄

AppDelegate.swift

myViewController.swift

ViewController.swift

NetWork ------------網(wǎng)絡(luò)相關(guān)

RequestClient.swift

RequestAPI.swift

CustomVC ------------VC的封裝,

CostomNavigationVC.swift

BaseViewController.swift

在這里我們主要拿中國(guó)天氣網(wǎng)的API測(cè)試一個(gè)PUT請(qǐng)求,來(lái)看下RequestAPI.swift。

  1. override func viewDidLoad() { 
  2. super.viewDidLoad() 
  3.  
  4. self.view.backgroundColor = UIColor.brownColor() 
  5. var image:UIImage 
  6. //Navigationbar 左側(cè)返回按鈕自定義,參考文件BaseViewController.swift 
  7. self.leftButton(nil, hlIimage: nil, title: "返回", size: CGSize(width: 38, height: 30), action: "buttonClick", target: self) 
  8.  
  9. var dic:Dictionary= ["A":"a","B":"b","C":"c"]; 
  10.  
  11.  
  12. //post測(cè)試 
  13. RequestAPI.POST("List", body: dic, succeed: succeed, failed:failed) 
  14. //get測(cè)試 
  15. var getUrl:String = "http://m.weather.com.cn/atad/101190101.html" 
  16. RequestAPI.GET(getUrl, body: nil, succeed: succeed, failed: failed) 
  17.  
  18. //文件上傳 
  19. // Do any additional setup after loading the view. 
  20. func succeed(task:NSURLSessionDataTask!,responseObject:AnyObject!)->Void{ 
  21. println("oh my god 成功了+\(responseObject)"
  22.  
  23. func failed(task:NSURLSessionDataTask!,error:NSError!)->Void{ 
  24. println("oh shit 失敗了"

在ViewController我們通過(guò)調(diào)用RequestAPI的類方法GET來(lái)獲取數(shù)據(jù),同時(shí)我們定義了兩個(gè)方法succeed和failed,注意看方法中得參數(shù)和AFHTTPSessionManager

返回?cái)?shù)據(jù)的參數(shù)是一樣的,這樣我們的拿到的數(shù)據(jù)就是服務(wù)器給我們返回的全部數(shù)據(jù),調(diào)用equestAPI的GET方法將講個(gè)函數(shù)指針傳遞過(guò)去,網(wǎng)絡(luò)請(qǐng)求成功之后會(huì)通過(guò)函數(shù)指針將數(shù)據(jù)返回。

然后我們就可以進(jìn)行其他的工作了。

使用過(guò)新版AFNetworking會(huì)經(jīng)常遇到3084 1011和1016錯(cuò)誤,出現(xiàn)這幾個(gè)錯(cuò)誤一般是數(shù)據(jù)解析錯(cuò)誤,更改AFNetworking里面相應(yīng)的數(shù)據(jù)類型即可,也可以根據(jù)實(shí)際情況自己定義。

  1. /** 
  2. RequestClient.sharedInstance.requestSerializer = AFJSONRequestSerializer() 
  3. RequestClient.sharedInstance.responseSerializer = AFJSONResponseSerializer() 
  4. RequestClient.sharedInstance.requestSerializer.setValue("application/json,text/html", forHTTPHeaderField: "Accept") 
  5. RequestClient.sharedInstance.requestSerializer.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 
  6. */ 

總結(jié),AFNetworking已經(jīng)是用的最多的網(wǎng)絡(luò)的框架,對(duì)AFNetworking的進(jìn)一步的簡(jiǎn)單外層封裝,我們就可以避免網(wǎng)絡(luò)請(qǐng)求時(shí)大量初始化工作,直接使用單例即可,這樣提高了

效率,也節(jié)省了大量的代碼,至少一眼望去自己看的也比較舒服,通過(guò)使用Swift來(lái)封裝AFNetworking,也系統(tǒng)的熟悉一下swift的基本語(yǔ)法,數(shù)據(jù)類型,以及單例,閉包等得使用,

對(duì)應(yīng)swift初學(xué)者來(lái)說(shuō),實(shí)際學(xué)習(xí)效果還是比較明顯的,有了這些現(xiàn)在你就可以使用swift來(lái)寫一個(gè)簡(jiǎn)單的糗百或者新聞了,還等什么那,只要自己往前沖,就不會(huì)再最后。

責(zé)任編輯:chenqingxiang 來(lái)源: XiaoyangWorld的專欄
相關(guān)推薦

2014-07-02 09:47:06

SwiftCocoaPods

2022-05-17 08:25:10

TypeScript接口前端

2022-06-23 08:00:53

PythonDateTime模塊

2021-06-09 09:36:18

DjangoElasticSearLinux

2021-03-09 07:27:40

Kafka開源分布式

2024-01-18 08:37:33

socketasyncio線程

2011-08-10 09:31:41

Hibernateunion

2015-11-26 10:57:56

DockerOpen vSwitc

2021-09-10 10:30:22

Java庫(kù)代碼

2022-10-25 09:07:28

Linuxxargs命令

2025-03-21 09:58:59

Python數(shù)據(jù)類型安全

2023-12-01 09:18:27

AxiosAxios 庫(kù)

2019-09-16 19:00:48

Linux變量

2020-11-30 11:55:07

Docker命令Linux

2024-09-06 11:34:15

RustAI語(yǔ)言

2020-04-09 10:18:51

Bash循環(huán)Linux

2010-08-05 13:07:11

FlexJson

2012-05-01 20:57:26

Sencha Touc

2022-04-01 15:39:13

機(jī)器學(xué)習(xí)讓孩子們軟件交付

2023-03-05 19:28:11

JavaScripCSS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)