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(简书作者),以此转载记录!

    用最好的情绪做最好的自我。开心是一天,不开心也是一天,不如天天开心。活在当下,生活就为你歌唱。
  • 相关阅读:
    Chrome表单文本框自动填充黄色背景色样式
    find_in_set的用法(某个字段包含某个字符)
    array_column()函数兼容低版本
    总结一下工作中遇到的NPOI以及在ASP.NET MVC中的使用
    网络爬虫+HtmlAgilityPack+windows服务从博客园爬取20万博文
    【原创】贡献一个JS的弹出框代码...
    .NET微信公众号开发-6.0模板消息
    .NET微信公众号开发-5.0微信支付
    .NET微信公众号开发-4.0公众号消息处理
    .NET微信公众号开发-3.0查询自定义菜单
  • 原文地址:https://www.cnblogs.com/lukunlun/p/5924125.html
Copyright © 2011-2022 走看看