美文网首页
网络请求:Alamfire+数据模型

网络请求:Alamfire+数据模型

作者: iOS分享 | 来源:发表于2019-07-19 14:50 被阅读0次

首先在Podfiled中导入三个框架

 pod 'Alamofire'
 pod 'SwiftyJSON'
 pod 'HandyJSON'

创建名为NetworkTool的swift文件,进行网络请求

import UIKit
import Alamofire
import SwiftyJSON
//import SwiftyJSON

protocol NetworkToolProtocol {
  //-------------------我的 Mine ------------------
  //我的界面Cell的数据
  static func loadMyCellData(completionHandler:@escaping (_ sections:[[MyCellModel]])->())
  //我的关注的数据

extension NetworkToolProtocol{
  //我的界面cell的数据请求
  static func loadMyCellData(completionHandler:@escaping (_ sections:[[MyCellModel]])->()){
      let url = BASE_URL + "/user/tab/tabs/?"
      let params = ["device_id":device_id]
      Alamofire.request(url,parameters:params).responseJSON { (response) in
          //判断网络请求是否成功
          guard response.result.isSuccess else{
              //网络错误的提示信息
              return
          }
          if let value = response.result.value{
              //JSON  SwiftyJSON语句
              let json = JSON(value)
              guard json["message"] == "success" else{return}
              if let data = json["data"].dictionary{
                  print(data)
                  if let sections = data["sections"]?.array{
                      var sectionArray = [[MyCellModel]]()
                      for item in sections{
                          var rows = [MyCellModel]()
                          for row in item.arrayObject!{
                              let myCellModel = MyCellModel.deserialize(from: row as? NSDictionary)
                              rows.append(myCellModel!)
                          }
                          sectionArray.append(rows)
                      }
                      completionHandler(sectionArray)
                  }
          }
      }
  }
  }
}
struct NetworkTool:NetworkToolProtocol {}

获取数据JSON图:

{
    "data": {
        "sections": [
            [
                {
                    "text": "我的钱包",
                    "grey_text": "全民抽奖7月好礼",
                    "url": "sslocal://webview?url=https%3a%2f%2fis.snssdk.com%2ffeoffline%2fwallet_portal%2findex.html&title=%E6%88%91%E7%9A%84%E9%92%B1%E5%8C%85&hide_more=1&hide_bar=1&bounce_disable=1&hide_status_bar=1&back_button_color=white&status_bar_color=white&background_colorkey=3&should_append_common_param=1&disable_web_progressView=1&use_offline=1&show_load_anim=0",
                    "key": "mall",
                    "icons": {
                        "day": {
                            "height": 24,
                            "radius": 0,
                            "uri": "",
                            "url_list": [
                                {
                                    "url": "http://p3.pstatp.com/origin/1e0660002e8c1d26332ce"
                                }
                            ],
                            "width": 24
                        },
                        "night": {
                            "height": 24,
                            "radius": 0,
                            "uri": "",
                            "url_list": [
                                {
                                    "url": "http://p3.pstatp.com/origin/1e0660002e8c1d26332ce"
                                }
                            ],
                            "width": 24
                        }
                    },
                    "tip_new": 0,
                    "tip_text": ""
                },
                {...}
            ],
            [...],
            [...]
        ]
    },
    "message": "success"
}

创建一个名为MyCellModel的数据模型文件,来对应获取的数据。

import HandyJSON
struct MyCellModel:HandyJSON {
    var grey_text:String = ""
    var text:String = ""
    var url:String = ""
    var key:String = ""
    var tip_new:Int = 0
    }
}

最后在需要获取数据的地方调用此代码

  NetworkTool.loadMyCellData(completionHandler: )

相关文章

  • 网络请求:Alamfire+数据模型

    首先在Podfiled中导入三个框架 创建名为NetworkTool的swift文件,进行网络请求 获取数据JSO...

  • 处理Model(一)使用 setValuesForKeysWit

    | 在进行网络请求时, 我们常常封装自己的数据模型.这个时候我们就需要用网络请求下来的数据给自己的数据模型赋值.下...

  • 自动对象序列化和网络数据解析,数据模型和字典的互转

    常用场景: 将网络请求Json数据、NSDictionary、数组,映射为数据模型。 将数据模型对象序列化成字典保...

  • IOS项目搭建

    Http:存放的是网络请求基类和一些网络数据模型类 Class:放的是ViewController、View、Mo...

  • iOS 模型动态映射

    iOS 开发中,一旦涉及到网络请求,那么数据模型就不可少,当然你也可以选择直接用网络请求的数据,通过获取key的方...

  • 9.多线程

    如何创建一个线程 多线程可以做什么 网络请求 IO 计算 数据模型转化 ...... 多线程编程的方式 Threa...

  • Runtime实现iOS字典转模型

    在开发中,对于处理网络请求中获取的数据(即把请求到的json或字典转换成方便使用的数据模型)是我们在开发中必不可少...

  • iOS 字典转模型

    在开发中,对于处理网络请求中获取的数据(即把请求到的json或字典转换成方便使用的数据模型)是我们在开发中必不可少...

  • 搭建一个完整的swift项目

    对于一个 iOS 项目,在搭建项目的时候,使用的架构为 MVVM 架构,需要考虑的有以下几点: 数据模型 网络请求...

  • Flutter技术点

    1.字典(Map)、JSON、模型相互转换 打印结果 模型数据 2.网络get请求数据 1.返回数据模型 2.发起...

网友评论

      本文标题:网络请求:Alamfire+数据模型

      本文链接:https://www.haomeiwen.com/subject/epcclctx.html