CoreModel icon indicating copy to clipboard operation
CoreModel copied to clipboard

最新版本模型中带有下划线会导致Carsh

Open HuaZao opened this issue 8 years ago • 2 comments

比如在Model定义 school_code 这种带下划线的变量名会导致Carsh

HuaZao avatar Apr 03 '16 02:04 HuaZao

我也遇到了,怎么解决

xuzixian avatar Apr 05 '16 07:04 xuzixian

目前有一取巧方法:在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]; } 只去掉第一个 _

xuzixian avatar Apr 05 '16 07:04 xuzixian