美文网首页SwiftSwiftSwift学习
swift——原生的Data与Dictionary互转的方法,及

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

作者: Bart_Simpson | 来源:发表于2017-04-11 20:27 被阅读3116次

    先贴上互转方法

    这是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。

    转载请注明出处,谢谢。

    相关文章

      网友评论

        本文标题:swift——原生的Data与Dictionary互转的方法,及

        本文链接:https://www.haomeiwen.com/subject/ejwuattx.html