Swift 网络数据请求与解析
先说说这几个三方库:
第一个:Alamofire(它的原作者就是AFNetworking的原作者,这个就不多说了,你要知道AFNetworking有多重要,多好用,它就有多重要好用!)
Git地址:https://github.com/Alamofire/Alamofire
特点:纯Swift编写的HTTP网络库
链式请求/响应
URL/JSON/Plist格式的参数
上传文件/数据/流/多格式参数
断点续传
NSURLCredential授权
HTTP响应验证
NSProgress&进度闭包
支持环境:iOS8.0以上 xcode7.2以上
//请求
func request() {
let url = "https://api.douban.com/v2/book/search"
let param = ["tag":"Swift" , "count":"1"]
Alamofire.request(.GET, url, parameters:
param).responseJSON { (response) in
if let error = response.result.error {
print(error)
}else if let value = response.result.value{
print(value)
}
}
}
//下载
func downLoad(){
let url = "http://img.pconline.com.cn/image/photoblog/1/7/7/4/1774994/20063/28/1143511691007.JPG"
print(NSHomeDirectory())
Alamofire.download(.GET, url, destination:
Alamofire.Request.suggestedDownloadDestination()).progress { (readBytes, totalReadBytes, totalNeedToReadBytes) in
let progress = Int(Double(totalReadBytes)/Double(totalNeedToReadBytes)
* 100)
print("\(progress)%")
}.response { (request,
response, data, error) in
if let error = error {
print(error)
}else {
print("下载成功")
}
}
}.response(queue: dispatch_get_main_queue()) { (_, _, _, error) in
//返回主线程操作
if let error = error {
print(error)
}else {
print("下载成功")
}
}
第二个:SwiftyJSON一个解析JSON数据的三方库,使用swift写的,中间帮你省去swift的各种可选值的操作,很简便(推荐!)
Git地址:https://github.com/SwiftyJSON/SwiftyJSON
用法
else if let jsonresult =
response.result.value {
// 用 SwiftyJSON 解析数据
let JSOnDictory = JSON(jsonresult)
let data =
JSOnDictory["goods_list"].array
for dataDic in data!
{
let model = Model()
model.hd_thumb_url = dataDic["hd_thumb_url"].string ?? ""
model.goods_name = dataDic["goods_name"].string ?? ""
let numString = dataDic["normal_price"].intValue ?? 0
model.normal_price = numString
self.dataArr.append(model)
}
self.tableView.reloadData()
}
第三个:Kingfisher(一个图片加载的国产库。重点是国产的的支持!)
用法
self.backGroundImage?.kf_setImageWithURL(NSURL(string: backGroundImageName!)!)