ObjectiveC中用于'java.lang.Class.getDeclaredField()'的类似方法

时间:2013-04-09 06:10:11

标签: java objective-c function variables methods

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

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

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

2 个答案:

答案 0 :(得分: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");
}

编辑:/ for 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;
}

答案 1 :(得分:-1)

他们可以提供respondsToSelectorconformsToProtocol方法