zoukankan      html  css  js  c++  java
  • iOS 创建模型时自动生成属性

    转载 mark666(简书作者), 链接:http://www.jianshu.com/p/63ee533a7705

    我们在创建模型的时候,常常要写一大堆恶心的@property(nonatomic, copy) NSString *name;垃圾代码,遇到这个就恶心的想吐,我就想能不能自动给我生成了,你还别说网上github上就有这种软件,有兴趣的可以去搜一下,但是作为一个程序员不能老想着用别人的东西,所以我就给NSObject添加一个分类,当传入一个字典会自动生成打印处理,接下来需要做的就是command + c然后command + v到自己的模型中,然后采用了李明杰大神的MJExtension.h这个框架给模型数据数据赋值的方式(也就是运行时的方式),或者大家也可以通过KVC来赋值,都可以,下面提供生成属性代码的分类

    // 自动生成属性声明的代码
    
    + (void)propertyCodeWithDictionary:(NSDictionary *)dict
    {
    
        NSMutableString *strM = [NSMutableString string];
        
        [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
            
            NSString *str;
            
            NSLog(@"%@",[obj class]);
            if ([obj isKindOfClass:NSClassFromString(@"__NSCFString")] || [obj isKindOfClass:NSClassFromString(@"NSTaggedPointerString")] || [obj isKindOfClass:NSClassFromString(@"__NSCFConstantString")]) {
                str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSString *%@;",key];
            }
            if ([obj isKindOfClass:NSClassFromString(@"__NSCFNumber")]) {
                str = [NSString stringWithFormat:@"@property (nonatomic, assign) int %@;",key];
            }
            if ([obj isKindOfClass:NSClassFromString(@"__NSCFArray")]) {
                str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSArray *%@;",key];
            }
            if ([obj isKindOfClass:NSClassFromString(@"__NSCFDictionary")]) {
                str = [NSString stringWithFormat:@"@property (nonatomic, copy) NSDictionary *%@;",key];
            }
            if ([obj isKindOfClass:NSClassFromString(@"__NSCFBoolean")]) {
                str = [NSString stringWithFormat:@"@property (nonatomic, assign) BOOL %@;",key];
            }
            
            [strM appendFormat:@"
    %@
    ",str];
        }];
        
        NSLog(@"%@",strM);
    }

    本文会传一个简易的gitHub的链接,
    https://github.com/markdashi/baiduCourse,项目里是有pch文件的,只不过由于原先设置的路径是绝对路径,所以你下载下来之后路径改变了,你重新定向一下pch的文件路径就行了;TAGRGETS(BaiduCourse) ->BuildSettings ->Prefix Header 双击原先的路径,删除,然后把项目中的pch文件拖到白色输入框,重新运行就行了    

    以上是mark666(简书作者),以此转载记录!

    用最好的情绪做最好的自我。开心是一天,不开心也是一天,不如天天开心。活在当下,生活就为你歌唱。
  • 相关阅读:
    [原][诗]送幼儿园杨老师
    [原]由智能音箱被黑联想到。。。人类灭亡
    [转]VS中的路径宏 OutDir、ProjectDir、SolutionDir各种路径含义
    [原]globalmapper设置高程配色(globalmapper自定义配色方案)
    [原]JSON 字符串(值)做判断,比较 “string ”
    [转]使用 curl 发送 POST 请求的几种方式
    [转]c++多线程编程之pthread线程深入理解
    [转]c++ pthread 多线程简介
    Linux下ps -ef和ps aux的区别
    Java三种方式实现栈和队列
  • 原文地址:https://www.cnblogs.com/lukunlun/p/5924125.html
Copyright © 2011-2022 走看看