开始手写Model了

最近总觉得Model生成工具和JOSNModel用起来不顺心又开始手写Model了。
好处:
1.字段名字可以自己重定义,不用再用接口返回的看不懂的名字了
2.安全,怎么来都不会报错
3.修改方便,想怎么改怎么改

直接上图


开始手写Model了_第1张图片
65F8CFBD-C20F-4336-9579-ACC6500F5AE2.png

主要就是说一下listModelCreate这个方法,作用就是应对数组里有字典的数据,第一个参数:要转换的数组,第二个参数数组里Model对象的类名字

/*
 * 将数组里的元素自动装换成Model类(对应的Model类要实现initWithDictionary:方法)
 *  @property dataArr  要转换的数组
 *  @property className 数组里的item对应的类名字
 *  return 转换后存有数据的数组
 */
-(NSArray *)listModelCreate:(NSArray *)dataArr itemName:(NSString *)className;

-(NSArray *)listModelCreate:(NSArray *)dataArr itemName:(NSString *)className{
    NSMutableArray * tmpArr = [NSMutableArray arrayWithCapacity:[dataArr count]];
    NSAssert([dataArr isKindOfClass:[NSArray class]], @"带转化数据不为数组");
    [dataArr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        Class itemClass = NSClassFromString(className);
        SEL selector = NSSelectorFromString(@"initWithDictionary:");
        if ([[itemClass alloc] respondsToSelector:selector]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
            [tmpArr addObject:[[itemClass alloc] performSelector:selector withObject:obj]];
#pragma clang diagnostic pop
        }
    }];
    return [NSArray arrayWithArray:tmpArr];
}

文章更新http://www.jianshu.com/p/03470700722b(属性自动赋值)

你可能感兴趣的:(开始手写Model了)