//
//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:?“內容類型”)
*/