zoukankan      html  css  js  c++  java
  • ios json转model的简单现实

    在android开发中,可用第三方的转换库如gson等。当然在ios也有一些库如MJExtensiond等。在这里,我简单实现一下。

    一、先建一个model并且继承NSObject,代码如下:

    classUser:NSObject{

    var name:String?

    var sex:String?

    var age:Int=0

    override func setValue(_value:Any?, forUndefinedKey key:String) {

    }

    }

    二、在控制器中进行测试

    classTestViewController:UIViewController{

    overridefuncviewDidLoad() {

    super.viewDidLoad()

    let dic = ["name":"张三","sex":"男","age":"20"]

    let user =User()

    user.setValuesForKeys(dic)

    print("-转换结果--",user.name!,"---",user.sex!,"---",user.age)

    }

    overridefuncdidReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()

    }

    }

    运行后可以看到

    -转换结果--张三------ 20

    注意:

    但是有个问题,当我们的json数据字段多余我们的模型字段的时候就直接奔溃了(也就是说要一一对应,不然就报错)。这样的话显然不是我们想要的,因为在实际开发中,我们都只会取我们想要的那部分数据,其他的我们并不需要,这个问题怎么解决的其实也简单,只需要在我们的模型中重写一个setValue方法就可以过滤掉没有的字段了代码如下:

    classUser:NSObject{

    varname:String?

    varsex:String?

    varage:Int=0

    varno:String?

    override func setValue(_value:Any?, forUndefinedKey key:String) {

    }

    }

    重写后我们在测试的那个字典中加入a这个字段再来测试一下

    classTestViewController:UIViewController{

    overridefuncviewDidLoad() {

    super.viewDidLoad()

    letdic = ["name":"张三","sex":"男","age":"20","no":"1000","a":"wx"]

    letuser =User()

    user.setValuesForKeys(dic)

    print("-转换结果--",user.name!,"---",user.sex!,"---",user.age,user.no!)

    }

    overridefuncdidReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()

    }

    }

    运行不报错了,结果为:-转换结果--张三------ 20 1000

    :以上为swift3的实现,swift4之后有了变化,具体请看我的另一篇博客:swift4之kvo的使用

    这个就是简单的实现josn和model转换的示例,如有问题欢迎留言!

    简书地址:http://www.jianshu.com/p/99d302396ee9

  • 相关阅读:
    洛谷 P2048 [NOI2010]超级钢琴(优先队列,RMQ)
    洛谷P1074 靶形数独(跳舞链)
    洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)
    洛谷P4003 无限之环(费用流)
    洛谷P3264 [JLOI2015]管道连接(斯坦纳树)
    洛谷P3190 [HNOI2007]神奇游乐园(插头dp)
    洛谷P3272 [SCOI2011]地板(插头dp)
    常用的端口配置
    Win7+Eclipse+Hadoop2.6.4开发环境搭建
    Windows10+eclipse+hadoop2.7.1环境配置+wordcount-折腾笔记
  • 原文地址:https://www.cnblogs.com/zzjbk/p/7941406.html
Copyright © 2011-2022 走看看