【问题标题】:check if a particular property in a class (not an instance of class) exist检查类中的特定属性(不是类的实例)是否存在
【发布时间】:2013-08-15 13:50:59
【问题描述】:

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

示例:

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

在其他类中:

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

我怎样才能做到这一点?

【问题讨论】:

    标签: iphone ios nsobject


    【解决方案1】:

    因为它是一个@propery,所以它有getter 和setter 方法。

    在你的例子中:

    @property (nonatomic, strong) aType *property1;
    

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

    将 NSString 转换为选择器:

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

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

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

    【讨论】:

    • 现在我想使用相同的验证机制来检查 NSManagedObject 中的属性,问题是这无法完成(参见这篇文章:stackoverflow.com/questions/11053974/…)解决方案是创建一个 NSEntityDescription ,不实例化任何类就没有其他解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多