1,httpController.swift (数据获取封装类,结果处理协议)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import UIKit //自定义http协议 protocol httpProtocol { //定义一个方法接收一个字典 func dIDRecIEveResults(resultes: NSDictionary ) } class httpController : NSObject { //定义一个可选代理 var delegate: ? //定义一个方法运过来获取网络数据,接收参数为网址 onSearch(url: String ){ //定义一个NSURL let nsUrl: NSURL = (string: url)! //定义一个NSURLRequest request: NSURLRequest ( URL : nsUrl) //异步获取数据 NSURLConnection .sendAsynchronousRequest(request, queue: NSOperationQueue .mainQueue(), completionHandler: {(response: NSURLResponse ?,data: NSData NSError ?) -> VoID in //由于我们获取的数据是Json格式,所以我们可以将其转化为字典。 JsonResult: =try! NSJsONSerialization . JsONObjectWithData ( data!, options: NSJsONReadingOptions MutableContainers ) as ! NSDictionary //将数据传回给代理 self .delegate?.dIDRecIEveResults(JsonResult) }) } } |
2,VIEwController.swift (使用样例)
VIEwController UIVIEwController , { //获取网络数据的类 ehttp: () //接收频道列表的数组 channelData: NSArray () overrIDe vIEwDIDLoad() { super .vIEwDIDLoad() //为httpController实例设置代理 ehttp.delegate= self //获取频道数据 ehttp.onSearch( "http://www.douban.com/j/app/radio/channels" ) } //实现httpProtocol协议的方法 dIDRecIEveResults(results: ){ if (results[ "channels" ] != nil ){ //如果channels关键字的value不为nil,获取的就是频道数据 .channelData=results[ ] NSArray @H_178_403@print ( .channelData[0][ "name" ! ) //私人兆赫 } } dIDReceiveMemoryWarning() { .dIDReceiveMemoryWarning() } } |
3,请求数据样例
{ "channels" : [ "name_en" : "Personal Radio" "My" "华语" } |
以上是内存溢出为你收集整理的Swift - 异步获取网络数据封装类全部内容,希望文章能够帮你解决Swift - 异步获取网络数据封装类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)