首页投稿(暂停使用,暂停投稿)iOS

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

2016-05-06  本文已影响825人  Yasin的简书

之前公司的项目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插件修改了一下来做这个工作。

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

//比如这样
-(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"
如果你的原来的解析不是这种格式的,这个插件也是用不了的,针对性比较强。

//生成的原始代码是这样的
+(nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper {
    return @{@"strItemId " : @"id",
             @"strItemName " : @"title",
             @"strItemDesc " : @"content",
}

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

下面说下怎么使用和删除

DictInitToYYModel插件下载

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

上一篇 下一篇

猜你喜欢

热点阅读