美文网首页程序员
iOS 根据字典打印出模型类全属性声明

iOS 根据字典打印出模型类全属性声明

作者: 琼琼棒棒哒 | 来源:发表于2018-09-11 10:56 被阅读0次

   在APP开发中,声明模型类文件真的是一个出力无脑无技术的活,但又是必须要做的,网上有自动解析JSON生成模型类文件的,也有用脚本的,今天我提供在工程中使用的一种方式,就是给字典加一个extersion,每一个字典,调用这个方法就能打印出对应的模型类所有属性的声明了,然后复制黏贴就行,操作还是挺简单的,具体代码如下:

- (void)yq_printModelWithReplacePropertyType:(NSDictionary*)replaceDict modelName:(NSString*)modelName {

    NSArray*replacePropertyArray = [replaceDictallKeys];

    NSArray*newPropertyArray = [replaceDictallValues];

    __block NSString *log = [NSString stringWithFormat:@"\n---------- %@ 开始打印 ----------\n", modelName];

    [self enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

        // 确定引用

        NSString*reference =@"<#reference";

        // 确定类型

        NSString*type =@"<#type";

        // 确定属性名

        NSString*protertyName = key;

        // 确定要替换的类型

        if([replacePropertyArraycontainsObject:key]) {

            reference =@"strong";

            NSIntegerindex = [replacePropertyArrayindexOfObject:key];

            idvalue = newPropertyArray[index];

            if([valueisKindOfClass:[NSStringclass]]) {

                type = value;

                if([valueisEqualToString:@"BOOL"]) {

                    reference =@"assign";

                }

            }

        }elseif([objisKindOfClass:[NSNumberclass]]) {// 数字

            reference =@"assign";

            inta1 = [objintValue];

            inta2 = [objdoubleValue];

            if((a2 - a1) ==0) {

                type =@"NSInteger";

            }else{

                type =@"CGFloat";

            }

        }elseif([objisKindOfClass:[NSStringclass]]) {// 字符串

            reference =@"copy";

            type =@"NSString";

        }elseif([objisKindOfClass:[NSDictionaryclass]]) {// 字典

            reference =@"strong";

        }elseif([objisKindOfClass:[NSArrayclass]]) {// 数组

            reference =@"strong";

            type = [NSString stringWithFormat:@"NSArray<<#paradigm%@%@>", @"#", @">"];

        }

        if([referenceisEqualToString:@"<#reference"]) {

            reference = [NSStringstringWithFormat:@"%@#>", reference];

        }

        if([typeisEqualToString:@"<#type"]) {

            type = [NSStringstringWithFormat:@"%@#>", type];

        }

        if([referenceisEqualToString:@"strong"] || [referenceisEqualToString:@"copy"]) {

            protertyName = [NSStringstringWithFormat:@"*%@", key];

        }

        NSString *protertyStr = [NSString stringWithFormat:@"\n/**\n<#Description%@>\n*/\n@property (nonatomic, %@) %@ %@;\n", @"#", reference, type, protertyName];

        log = [NSStringstringWithFormat:@"%@%@", log, protertyStr];

    }];

    // 打印

    NSLog(@"%@", log);

}

相关文章

  • iOS 根据字典打印出模型类全属性声明

    在APP开发中,声明模型类文件真的是一个出力无脑无技术的活,但又是必须要做的,网上有自动解析JSON生成模型类文...

  • IOS字典转模型和KVC

    定义: 把字典中的数据使用模型来保存。新建一个类,根据字典中键值对,来编写这个类中的属性,将来用这个类的对象的属性...

  • KVC && KVO

    定义: 把字典中的数据使用模型来保存。新建一个类,根据字典中键值对,来编写这个类中的属性,将来用这个类的对象的属...

  • iOS根据模型属性生成字典 (字典转模型,使用Runtime)

  • Runtime(五) 实战

    实战一: 数据转模型 目标: 数据转模型考验知识点: 获取属性列表, 关联属性, 字典转模型 1, 获取类的属性列...

  • MJExtension使用

    复杂的字典 --> 模型 (模型的数组属性里面又装着模型) 模型类Ad和StatusResult定义: 使用实例:...

  • 6. 实现字典转模型的自动转换

    思路:利用运行时,遍历模型中所有属性,根据模型的属性名,去字典中查找key,取出对应的值,给模型的属性赋值。步骤:...

  • 偷懒啦!字典自动生成属性列表

    在网络请求或加载plist文件时,常会获得一个字典。我们通常会将字典转为模型。就避免不了在类的.h文件声明属性,这...

  • iOS开发:runtime实现字典转模型

    实现思路: 遍历模型中所有属性,根据模型的属性名去字典中查找key,取出对应的的值,给模型的属性赋值 使用到的ru...

  • iOS底层原理——Runtime

    实现思路: 遍历模型中所有属性,根据模型的属性名去字典中查找key,取出对应的的值,给模型的属性赋值 使用到的ru...

网友评论

    本文标题:iOS 根据字典打印出模型类全属性声明

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