swift model 解析的两种方法

swift model 解析的两种方法,第1张

概述1. 常规解析方法     //懒加载声明一个LJNewsModel为数据的数组     lazy var ljArray : [LJNewsModel] = [LJNewsModel]() //MARK:-- 数据获取和解析extension NewsViewController{ func requestNetData(){ /* 打印json数据

1. 常规解析方法

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

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


//MARK:-- 数据获取和解析extension NewsVIEwController{    func requestNetData(){        /*         打印Json数据         */        LJDownLoadNetimage.request("GET",url: "http://c.m.163.com/nc/article/@R_502_6818@/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 Foundationclass 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",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 Foundationclass 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 解析的两种方法全部内容,希望文章能够帮你解决swift model 解析的两种方法所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1059404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存