Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift - 异步获取网络数据封装类大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

使用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
//获取频道数据
}
//实现HttpProtocol协议的方法
didRecieveResults(results: ){
if (results[ "channels" ] != nil ){
//如果channels关键字的value不为nil,获取的就是频道数据
.channelData=results[ ] NSArray
@H_410_403@print ( .channelData[0][ "name" ! ) //私人兆赫
}
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
}

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: