我正在阅读一个文本文件。我想检查在类中声明的变量是否与我从文件中读取的文本名称相同。
java中的方法是'java.lang.Class.getDeclaredField()'。有关详细信息,请参阅http://www.tutorialspoint.com/java/lang/class_getdeclaredfield.htm。
我无法在ObjectiveC中找到类似的方法。有没有?如果不是,我怎么能实现同样的。如果您有任何想法,请给我一些提示。
答案 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)
他们可以提供respondsToSelector
和conformsToProtocol
方法