CoreModel
CoreModel copied to clipboard
最新版本模型中带有下划线会导致Carsh
比如在Model定义 school_code 这种带下划线的变量名会导致Carsh
我也遇到了,怎么解决
目前有一取巧方法:在NSObject+Runtime.m文件的+(void)enumerateCls: propertyBlock:的实现代码改成: +(void)enumerateCls:(Class)cls propertyBlock:(void(^)(CoreProperty *p))propertyBlock{
unsigned int numIvars; //成员变量个数
Ivar *vars = class_copyIvarList(cls, &numIvars);
//Ivar *vars = class_copyIvarList([UIView class], &numIvars);
NSString *key=nil;
NSString *type = nil;
for(int i = 0; i < numIvars; i++) {
//创建CoreProperty
CoreProperty *p =[CoreProperty new];
Ivar thisIvar = vars[i];
key = [NSString stringWithUTF8String:ivar_getName(thisIvar)]; //获取成员变量的名字
if ([[key substringWithRange:NSMakeRange(0, 1)] isEqualToString:@"_"]) {
key = [key substringFromIndex:1];
}
//记录变量名
p.name = key;
type = [NSString stringWithUTF8String:ivar_getTypeEncoding(thisIvar)]; //获取成员变量的数据类型
//处理并记录变量类型
p.code = type;
propertyBlock(p);
}
free(vars);
}
添加了 if ([[key substringWithRange:NSMakeRange(0, 1)] isEqualToString:@"_"]) { key = [key substringFromIndex:1]; } 只去掉第一个 _