检查是否存在类(不是类的实例)中的特定属性

时间:2013-08-15 13:51:00

标签: iphone ios nsobject

我必须创建一个类方法,我需要检查一个特定的字符串是否与类中的属性相对应。

示例:

@interface aClass
@property (nonatomic, strong) aType *property1;
@end

在其他课程中:

+ (X*)createXwithProperty:(NSString*) aProperty
{
  if([aClass haveProperty:aProperty])
    {
       return create(X);
    }
  else return nil;
}

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:3)

由于它是@propery,因此它具有getter和setter方法。

在你的例子中:

@property (nonatomic, strong) aType *property1;

Getter方法应该被称为property1作为您的属性,因此您可以检查您的类实例是否响应该选择器,如下所示:

将NSString转换为选择器:

SEL selector = NSSelectorFromString(@"property1");
if ([aClassInstance respondsToSelector:selector]) {
   NSLog(@"RESPONDS");
}

对不起,我要快速回答。我现在看到你要检查类是否具有特定属性,但是你没有类实例。 要查看类是否具有特定属性,请使用此方法(基本上,它与类实例的原理相同:)):

SEL selector = NSSelectorFromString(@"property1");
if ([aClassNotInstance instancesRespondToSelector:selector]) {
    NSLog(@"RESPONDS");
}