詳解Swift model 解析的兩種方法
更新時間:2017年09月17日 15:30:59 作者:水桶前輩
這篇文章主要介紹了詳解Swift model 解析的兩種方法的相關(guān)資料,希望通過本文大家能夠掌握這里的兩種實現(xiàn)方法,需要的朋友可以參考下
詳解Swift model 解析的兩種方法
1. 常規(guī)解析方法
//懶加載聲明一個LJNewsModel為數(shù)據(jù)的數(shù)組 lazy var ljArray : [LJNewsModel] = [LJNewsModel]()
//MARK:-- 數(shù)據(jù)獲取和解析
extension NewsViewController{
func requestNetData(){
/*
打印json數(shù)據(jù)
*/
LJDownLoadNetImage.request("GET", url: "http://c.m.163.com/nc/article/list/T1348647909107/0-20.html") { (data, respond, error) in
方法一:解析數(shù)據(jù)
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自有的函數(shù)進行解析-------推薦
//MARK:-- 數(shù)據(jù)獲取和解析
extension NewsViewController{
func requestNetData(){
/*
打印json數(shù)據(jù)
*/
LJDownLoadNetImage.request("GET", url: "http://c.m.163.com/nc/article/list/T1348647909107/0-20.html") { (data, respond, error) in
//as? [[String :Any]] 轉(zhuǎn)化為以字典為元素的數(shù)組
//as? [String :Any] 轉(zhuǎn)化為字典
//1.方法一:解析數(shù)據(jù) -- 推薦
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:- 自定義構(gòu)造函數(shù)
init(_ dict : [String: Any]){
super.init()
setValuesForKeys(dict)
}
override func setValue(_ value: Any?, forUndefinedKey key: String) {
}
}
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
iOS利用UIScrollView實現(xiàn)圖片的縮放實例代碼
本篇文章主要介紹了iOS利用UIScrollView實現(xiàn)圖片的縮放實例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07
iOS App的設計模式開發(fā)中對State狀態(tài)模式的運用
這篇文章主要介紹了iOS App的設計模式開發(fā)中對State狀態(tài)模式的運用,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-03-03
iOS13即將到來,iOS推送DeviceToken適配方案詳解
這篇文章主要介紹了iOS13即將到來,iOS推送DeviceToken適配方案詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
iOS UITableView 拖動排序?qū)崿F(xiàn)代碼
這篇文章主要為大家詳細介紹了iOS UITableView 拖動排序?qū)崿F(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09

