美文网首页开发小技巧
[玩]iOS好玩之快速创建Model

[玩]iOS好玩之快速创建Model

作者: iOS_Happy70 | 来源:发表于2016-02-01 12:51 被阅读821次

       作为一个优秀的程序员,或者想成为优秀的程序员,最基本的你得有MVC编程思想,那么你就要对JSON获取的数据建Model,将service和controller层都分离,从而做到低耦合。现在有很多利用runtime能快速的将json数据转为一个Model。但是我在做项目的时候,发现创建Model(特别是属性特多的)写属性代码很浪费时间,降低了编程效率。后来我自己就写了个好玩的能省去时间创建Model的一个“土八路”方法。下面上代码:

    打印出来:

    在控制台就看到已经将字典的字段全部创建好属性,然后把它直接复制到对应Model.h文件就OK了,一个多属性的Model就这样创建好了。

    我记得在cocoaChina上有个插件:iOS_Spring  也可以实现自动创建Model.有兴趣的朋友可以试试。

    欢迎大家讨论,指出不足的地方,当然你们有更好的方法也可以告诉我。谢谢!(不喜勿喷)

    相关文章

      网友评论

      • num_one:iOS自动生成Model https://github.com/zhangs3721/ZZJsonToModel 了解一下
      • 邓小帅:ESJsonFormatForMac了解一下
        num_one:@邓小帅 你好,感谢您抽出宝贵时间回复我,关于ESJsonFormatForMac,我用了一下。ZZJsonToModel 有以下几点优势:
        1.ESJsonFormatForMac生成文件在创建类名时需要手动确认每一个类名(且并不能判断类名是否已存在)。而且,使用ZZJsonToModel的GitHub主页的json生成文件时,对于特殊数组的处理会损失数据。
        2.ZZJsonToModel可以判断重复的类名,有效防止类名冲突产生的崩溃。
        3.Xcode打印出的json数据,部分key字段没有双引号,粘贴出去也不是json格式。ZZJsonToModel的创建,主要就是因为xcode打印的json无法直接使用,所以才直接接收请求数据。
        4.ZZJsonToModel在后期会添加json数据管理功能,在json数据中key产生变化时,可以管理key(省去请求数据后粘贴json的步骤)。
        邓小帅:@num_one 首先感谢你提供开源贡献一份力量,我刚仔细看了一下,实现的功能ESJsonFormatForMac全有

        以下我觉得可以改进或参考的地方,个人意见
        1. 生成的文件还要自己去打开文件夹再拖进来,这里就多了一步,ESJsonFormatForMac是直接生成完就打开(要是能有办法可以配置下直接生成导进项目就真的完美了!这是我认为在Model文件处理这种方式是最终形态,可惜这个除了xcode插件应该做不了这个,毕竟直接脚本拷贝文件进去是没有文件索引的,显示不出来)
        2. 不过仔细看了一下,你这个应用场景是: 网络接口写好了-》添加生成model文件代码-》打开文件夹-》拖文件进项目工程-》删除生成Model文件代码, 单从添加生成代码就有点侵入性了,个人感觉会更偏向于外部独立,ESJsonFormatForMac的应用场景是:网络接口写好了-》打印返回数据-》复制粘贴json数据-》点击生成文件然后自动弹出文件夹并选中文件-》拖进项目,这种方式个人感觉效率会更高一些
        num_one:iOS自动生成Model https://github.com/zhangs3721/ZZJsonToModel 了解一下
      • 58fe5465d15f:哈哈,确实有意思,Mark
      • i丶子木:有意思.mark~
      • Mondo_杰:想法真的很有意思,赞一个
      • LaiYoung_:有意思。
      • 7720da04604f:我也没有什么更好的 只是觉得你这想法确实是很创意的
      • 7720da04604f:我个人觉得这种方法也挺好的 有想法 有创意
        7720da04604f:@iOS_开心70 说明你的脑子很灵活
        iOS_Happy70:@dragon1061 嗯,谢谢支持。你有更好的 更有创意的,可以说出来一起玩玩。

      本文标题:[玩]iOS好玩之快速创建Model

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