先貼上互轉(zhuǎn)方法

這是Dictionary轉(zhuǎn)Data 的方法
源碼:
func jsonToData(jsonDic:Dictionary<String, Any>) -> Data? {
????if (!JSONSerialization.isValidJSONObject(jsonDic)) {
????????print("is not a valid json object")
????????return nil
}
????//利用自帶的json庫轉(zhuǎn)換成Data
????//如果設(shè)置options為JSONSerialization.WritingOptions.prettyPrinted,則打印格式更好閱讀
????let data = try? JSONSerialization.data(withJSONObject: jsonDic, options: [])
????//Data轉(zhuǎn)換成String打印輸出
????let str = String(data:data!, encoding: String.Encoding.utf8)
????//輸出json字符串
????print("Json Str:\(str!)")
????return data
}

這是Data轉(zhuǎn)Dictionary, 上面是首先判斷能否轉(zhuǎn)換成功,下面用的do catch。 ??
源碼:
func dataToDictionary(data:Data) ->Dictionary<String, Any>?{
????do{
????????let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
????????let dic = json as! Dictionary<String, Any>
????????return dic
????}catch _ {
????????print("失敗")
????????return nil
????}
}
首先因?yàn)槭亲约簩懙腄emo,所以先定義Dictionary,轉(zhuǎn)為Data,然后再轉(zhuǎn)成Dictionary。

這樣的最后得到的Dictionary就是一開始你定義的。
然后關(guān)于Model,直接上圖

定義好你需要的變量,也就是成員,然后將解析出來的Dictionary的key定義為一個數(shù)組(例子中就是我定義的Dictionary的key,實(shí)際項(xiàng)目中就是你得到的返回值對應(yīng)的key),再將你與之相對應(yīng)的變量定義為一個數(shù)組,順序要對應(yīng)上喲。然后遍歷數(shù)組并賦值
源碼:
class testModel:NSObject{
????var name:String!
????var age:String!
????var sex:String!
????convenience init(dic:Dictionary<String, Any>){
????????self.init()????
????????let arr1 = ["姓名","年齡","性別"]
????????let arr2 = ["name","age","sex"]
????????for (index, value) in arr1.enumerated() {
????????????self.setValue(dic[value], forKey: arr2[index])
????????}
? ? }
}
下面是使用方法

調(diào)用非常簡單,傳入Dictionary就搞定了所有的賦值。這樣子的Model同樣適用于第三方庫解析出來的數(shù)據(jù),例如SwiftJSON,區(qū)別只是傳入的字典類型改為JSON。
轉(zhuǎn)載請注明出處,謝謝。