Swift 网络数据请求与解析

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!)!)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、使用Alamofire进行数据请求 1,以GET请求为例 (1)不带参数,不带结果处理 Alamofire.r...
    否极泰来_L阅读 13,372评论 0 9
  • 多宝拿着我的画本问我:妈妈这是谁? 我回:这是丢丢,我的画画导师。 多宝继续问:妈妈,这是谁? 我回:这是我画的我...
    金晶花阅读 1,644评论 0 0
  • 都说大学是个小社会,跟真社会比起来,可差远了。 01. 九月份,开学季,我却过完了走进教室上课的时光,顺利地荣升为...
    蔓草岛屿阅读 8,433评论 4 19
  • 今天天气蛮好 忍着头晕 手酸 终于在晚上写完了英语作业 然后决定一会去追熊梓淇小哥哥的浪花一朵朵 今天更新 超开心...
    生怕fy阅读 1,131评论 0 0