Swift - 异步获取网络数据封装类

Swift - 异步获取网络数据封装类,第1张

概述使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据。下面通过对数据获取类进行封装,演示如何进行数据请求与接收。 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 使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据。下面通过对数据获取类进行封装,演示如何进行数据请求与接收。
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 (使用样例) 31
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,请求数据样例 25
{ "channels" : [ "name_en" : "Personal Radio" : 0, "abbr_en" "My" "私人兆赫" : 0 }, { "华语" { "欧美" "" } ] }
总结

以上是内存溢出为你收集整理的Swift - 异步获取网络数据封装类全部内容,希望文章能够帮你解决Swift - 异步获取网络数据封装类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存