最近總覺(jué)得Model生成工具和JOSNModel用起來(lái)不順心又開(kāi)始手寫(xiě)Model了。
好處:
1.字段名字可以自己重定義吴叶,不用再用接口返回的看不懂的名字了
2.安全,怎么來(lái)都不會(huì)報(bào)錯(cuò)
3.修改方便口予,想怎么改怎么改
直接上圖
65F8CFBD-C20F-4336-9579-ACC6500F5AE2.png
主要就是說(shuō)一下listModelCreate這個(gè)方法胰坟,作用就是應(yīng)對(duì)數(shù)組里有字典的數(shù)據(jù),第一個(gè)參數(shù):要轉(zhuǎn)換的數(shù)組戳晌,第二個(gè)參數(shù)數(shù)組里Model對(duì)象的類名字
/*
* 將數(shù)組里的元素自動(dòng)裝換成Model類(對(duì)應(yīng)的Model類要實(shí)現(xiàn)initWithDictionary:方法)
* @property dataArr 要轉(zhuǎn)換的數(shù)組
* @property className 數(shù)組里的item對(duì)應(yīng)的類名字
* return 轉(zhuǎn)換后存有數(shù)據(jù)的數(shù)組
*/
-(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]], @"帶轉(zhuǎn)化數(shù)據(jù)不為數(shù)組");
[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.reibang.com/p/03470700722b(屬性自動(dòng)賦值)