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:@"\n%@\n",str];
    }];
    
    NSLog(@"%@",strM);
}

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

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

posted @ 2016-09-30 16:17  Louis~Lu  阅读(2072)  评论(1编辑  收藏  举报