加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 07:14:57 所属栏目:百科 来源:网络整理
导读:使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据。下面通过对数据获取类进行封装,演示如何进行数据请求与接收。 1,HttpController.swift (数据获取封装类,结果处理协议) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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
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
print ( .channelData[0][ "name" ! ) //私人兆赫
}
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
}

3,请求数据样例
25
{
"channels" : [
"name_en" : "Personal Radio" "seq_id" : 0,
"abbr_en" "My" "name" "私人兆赫" "channel_id" : 0
},
{
"华语" "" "1" ""
{
"欧美" : 1,
"2" ""
}
]
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读