SwiftSwiftSwift学习

swift——原生的Data与Dictionary互转的方法,及

2017-04-11  本文已影响3116人  Bart_Simpson

先贴上互转方法

这是Dictionary转Data 的方法

源码:

funcjsonToData(jsonDic:Dictionary) ->Data?{

if(!JSONSerialization.isValidJSONObject(jsonDic)) {

print("is not a valid json object")

returnnil

}

//利用自带的json库转换成Data

//如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读

letdata =try? JSONSerialization.data(withJSONObject: jsonDic, options: [])

//Data转换成String打印输出

letstr = String(data:data!, encoding: String.Encoding.utf8)

//输出json字符串

print("Json Str:\(str!)")

returndata

}

这是Data转Dictionary, 上面是首先判断能否转换成功,下面用的do catch。   

源码:

funcdataToDictionary(data:Data) ->Dictionary?{

do{

letjson =tryJSONSerialization.jsonObject(with: data, options: .mutableContainers)

letdic = jsonas!Dictionary

returndic

}catch_{

print("失败")

returnnil

}

}

首先因为是自己写的Demo,所以先定义Dictionary,转为Data,然后再转成Dictionary。

这样的最后得到的Dictionary就是一开始你定义的。

然后关于Model,直接上图

定义好你需要的变量,也就是成员,然后将解析出来的Dictionary的key定义为一个数组(例子中就是我定义的Dictionary的key,实际项目中就是你得到的返回值对应的key),再将你与之相对应的变量定义为一个数组,顺序要对应上哟。然后遍历数组并赋值

源码:

classtestModel:NSObject{

varname:String!

varage:String!

varsex:String!

convenienceinit(dic:Dictionary){

self.init()

letarr1 = ["姓名","年龄","性别"]

letarr2 = ["name","age","sex"]

for(index, value)inarr1.enumerated() {

self.setValue(dic[value], forKey: arr2[index])

}

下面是使用方法

调用非常简单,传入Dictionary就搞定了所有的赋值。这样子的Model同样适用于第三方库解析出来的数据,例如SwiftJSON,区别只是传入的字典类型改为JSON。

转载请注明出处,谢谢。

上一篇下一篇

猜你喜欢

热点阅读