YYModel映射map自动生成插件(测试版)

之前公司的项目json转换model是自己写的,手动从字典中取值、然后再赋值。处于多方面考虑决定使用YYModel,原因就不说了。
YYModel通过一个映射关系可以自动从json转换到model

/返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。
+ (NSDictionary *)modelCustomPropertyMapper {
    return @{@"name" : @"n",
             @"page" : @"p",
             @"desc" : @"ext.desc",
             @"bookID" : @[@"id",@"ID",@"book_id"]};
}

但是我们的项目有300多个接口,model也有几十个,没有model里面都添加一个这个方法,工作量不说了,关键都是字符串,复制来复制去的,特别容易出错,所以就把VVDocumenter-Xcode插件修改了一下来做这个工作。

所以这个插件只是简单的修改了一下,有很多坑,先来介绍坑吧,合适你了再用。

  • 坑1
    因为是VVDocumenter-Xcode修改的,所以会和VVDocumenter-Xcode冲突,两个插件不能共存,你在安装我的插件之前做好先把VVDocumenter-Xcode卸载了。
  • 坑2
    代码的自动生成是有条件的。需要格式对照
//比如这样
-(void)setData:(NSDictionary *)data
{
    self.strItemId = [data valueForKey:@"id"];
    self.strItemName = [data valueForKey:@"title"];
    self.strItemDesc =[data valueForKey:@"content"];
}

首页你的原来解析的代码要在一个方法体里面(方法名字无所谓),然后解析格式是self.aaa = xxxxx@"bbb"xxx;
这样在这个方法体上面就会自动生成对照的映射@"aaa":@"bbb"
如果你的原来的解析不是这种格式的,这个插件也是用不了的,针对性比较强。

  • 坑3
    要结合XAlign自动对齐插件来使用
    自动生成的代码是不带对齐的,所以XAlign是用来对齐的。
    另外我也不知道为什么,在自动生成的时候会插入一个不知道哪里来的空格符,对齐之后才会显示出来,初步估计是编码格式的问题
//生成的原始代码是这样的
+(nullable NSDictionary *)modelCustomPropertyMapper {
    return @{@"strItemId " : @"id",
             @"strItemName " : @"title",
             @"strItemDesc " : @"content",
}

比如@"strItemId "就是最后带有一个空格,要删除掉。
另外代码生成后+前面有一个tab空格,也要删掉

  • 坑4
    估计后期不会维护,我已经将就着用完了,希望以后能有大神继续优化更新。我分享出来只是因为我方便完了,如果有人和我一样的情况,也可以将就着方便一下。

下面说下怎么使用和删除

DictInitToYYModel插件下载

加载插件:下载项目,直接运行,运行的时候不是选择模拟器,就是选择My Mac。运行完成后就安装插件成功了。关闭xcode,重新打开,会弹出一个选择框,选择‘Load Bundle’,就会开启成功。
使用:在上面说到的原来的代码方法体上面敲三个斜杠/,就会自动生成对应的代码。
删除:使用完成后前往目录~/Library/Application Support/Developer/Shared/Xcode/Plug-ins,删除掉DictInitToYYModel.xcplugin文件,重新启动xcode就可以了。

你可能感兴趣的:(YYModel映射map自动生成插件(测试版))