0

我正在阅读一个文本文件。我想检查类中是否声明了一个变量,其名称与我从文件中读取的文本相同。

java中的方法是'java.lang.Class.getDeclaredField()'。有关详细信息,请参阅http://www.tutorialspoint.com/java/lang/class_getdeclaredfield.htm

我在 ObjectiveC 中找不到类似的方法。有没有?如果不是,我该如何实现。如果您有任何想法,请给我一些提示。

4

2 回答 2

1

您可以像这样检查:/对于属性/

YourClass *arrObj=[YourClass new];//your target class where you wnat to check
NSString *propertyName=@"samllArray";//this is what you will check in class YourClass
if([arrObj respondsToSelector:NSSelectorFromString(propertyName)]){
    NSLog(@"yes, exists");
}
else{
    NSLog(@"no, it does not exists");
}

编辑:/对于 ivars /

- (NSMutableArray *)getAllPropertyOfClass:(Class)aClass {
    NSMutableArray *mArray=[NSMutableArray new];
    unsigned int outCount;
    Ivar *ivars = class_copyIvarList([aClass class], &outCount); //class_copyPropertyList([aClass class], &outCount);

    for(unsigned int i = 0; i < outCount; i++) {
        Ivar ivar = ivars[i];
        const char *propName = ivar_getName(ivar);
        if(propName) {
            NSString *propertyName = [NSString stringWithUTF8String:propName];
            mArray[mArray.count]=propertyName;
        }
    }
    free(ivars);
    return mArray;
}
于 2013-04-09T06:16:39.487 回答
-1

有一些方法respondsToSelector也许conformsToProtocol他们可以帮助

于 2013-04-09T06:15:14.840 回答