0

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

例子:

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

在其他班级:

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

我怎样才能做到这一点?

4

1 回答 1

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");
}
于 2013-08-15T13:59:44.313 回答