全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Swift model 解析的两种方法

详解Swift model 解析的两种方法

1. 常规解析方法

  //懒加载声明一个LJNewsModel为数据的数组

  lazy var ljArray : [LJNewsModel] = [LJNewsModel]()

//MARK:-- 数据获取和解析 
extension NewsViewController{ 
  func requestNetData(){ 
    /* 
     打印json数据 
     */ 
    LJDownLoadNetImage.request("GET", url: "http://c.m.163.com/nc/article/list/T1348647909107/0-20.html") { (data, respond, error) in 
       方法一:解析数据 
        
       let str = String(data:data!, encoding: String.Encoding.utf8)! 
       print(str) 
        
       let ljTempArray : NSArray = self.getDictionaryFromJSONString(jsonString: str).object(forKey: "T1348647909107") as! NSArray 
        
       for m in 0 ..< ljTempArray.count 
       { 
       let dict:NSDictionary = ljTempArray[m] as! NSDictionary 
       let model = LJNewsModel() 
       model.imageUrl = dict.object(forKey: "imgsrc") as! String 
       model.contentStr = dict.object(forKey: "title") as! String 
       let count :Int = (dict.object(forKey: "replyCount") != nil) ? dict.object(forKey: "replyCount") as! Int : 0 
       model.replyCount = "\(count)" 
       self.ljArray.add(model) 
       } 
       
      self.ljTablewView.reloadData() 
    } 
  } 
   
  func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{ 
     
    let jsonData:Data = jsonString.data(using: .utf8)! 
     
    let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) 
    if dict != nil { 
      return dict as! NSDictionary 
    } 
    return NSDictionary() 
  } 
} 

model

import Foundation 
 
class LJNewsModel: NSObject { 
   
  //MARK:- 定义属性 
  var imgsrc: String = ""  ///< store user's name, optional 
  var title: String = ""   ///< store user's telephone number 
  var replyCount: Int = 0 
   
  //方法二的model 
  override init() { 
    super.init() 
  } 
   
  func setModel(_ imageUrl: String ,_ contentStr: String, _ replyCount:Int) { 
    self.imageUrl = imageUrl 
    self.contentStr = contentStr 
    self.replyCount = replyCount 
  } 
} 

2. 利用swift自有的函数进行解析-------推荐

//MARK:-- 数据获取和解析 
extension NewsViewController{ 
  func requestNetData(){ 
    /* 
     打印json数据 
     */ 
    LJDownLoadNetImage.request("GET", url: "http://c.m.163.com/nc/article/list/T1348647909107/0-20.html") { (data, respond, error) in 
       
      //as? [[String :Any]] 转化为以字典为元素的数组 
      //as? [String :Any]  转化为字典 
      //1.方法一:解析数据 -- 推荐 
      let str = String(data:data!, encoding: String.Encoding.utf8)! 
      guard let allResulrDict = self.getDictionaryFromJSONString(jsonString:str) as? [String : Any] else {return} 
      guard let dataArray = allResulrDict["T1348647909107"] as? [[String :Any]] else {return} 
      //print(dataArray) 
       
      for dict in dataArray{ 
        self.ljArray.append(LJNewsModel(dict)) 
      } 
      self.ljTablewView.reloadData() 
    } 
  } 
   
  func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{ 
     
    let jsonData:Data = jsonString.data(using: .utf8)! 
     
    let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) 
    if dict != nil { 
      return dict as! NSDictionary 
    } 
    return NSDictionary() 
  } 
} 
import Foundation 
 
class LJNewsModel: NSObject { 
   
  //MARK:- 定义属性 
  var imgsrc: String = ""  ///< store user's name, optional 
  var title: String = ""   ///< store user's telephone number 
  var replyCount: Int = 0 
   
   //方法一的model 
  //MARK:- 自定义构造函数 
  init(_ dict : [String: Any]){ 
    super.init() 
    setValuesForKeys(dict) 
  } 
 
  override func setValue(_ value: Any?, forUndefinedKey key: String) { 
  } 
} 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# swift  # model  # model解析的方法  # model两种解析方法  # Swift实现JSON转Model的方法及HandyJSON使用讲解  # 在Swift中使用JSONModel 实例代码  # 转化为  # 如有  # 两种  # 希望能  # 自定义  # 谢谢大家  # 疑问请  # 加载  # data  # html  # respond  # str  # error  # nc  # article  # list  # ljTempArray  # print  # NSArray  # jsonString 


相关文章: 网站制作公司,橙子建站是合法的吗?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何用AWS免费套餐快速搭建高效网站?  Python路径拼接规范_跨平台处理说明【指导】  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何快速查询域名建站关键信息?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  建站DNS解析失败?如何正确配置域名服务器?  建站168自助建站系统:快速模板定制与SEO优化指南  中山网站制作网页,中山新生登记系统登记流程?  IOS倒计时设置UIButton标题title的抖动问题  如何快速搭建高效可靠的建站解决方案?  建站之星如何实现PC+手机+微信网站五合一建站?  如何在建站之星网店版论坛获取技术支持?  高防服务器:AI智能防御DDoS攻击与数据安全保障  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  如何快速查询网址的建站时间与历史轨迹?  如何规划企业建站流程的关键步骤?  如何登录建站主机?访问步骤全解析  如何挑选高效建站主机与优质域名?  建站之星北京办公室:智能建站系统与小程序生成方案解析  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  模具网站制作流程,如何找模具客户?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  在线制作视频网站免费,都有哪些好的动漫网站?  无锡营销型网站制作公司,无锡网选车牌流程?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  Android自定义listview布局实现上拉加载下拉刷新功能  如何配置IIS站点权限与局域网访问?  如何快速辨别茅台真假?关键步骤解析  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  简单实现Android文件上传  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过商城免费建站系统源码自定义网站主题?  盐城做公司网站,江苏电子版退休证办理流程?  建站之星伪静态规则如何设置?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  专业网站建设制作报价,网页设计制作要考什么证?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  宝塔建站助手安装配置与建站模板使用全流程解析  网站制作新手教程,新手建设一个网站需要注意些什么?  香港服务器租用费用高吗?如何避免常见误区?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  定制建站策划方案_专业建站与网站建设方案一站式指南  平台云上自助建站如何快速打造专业网站?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  制作证书网站有哪些,全国城建培训中心证书查询官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。