如何从字符串中获取类的属性?

时间:2013-12-12 06:46:17

标签: ios iphone objective-c nsstring

我想从字符串中获取类的属性。 例如:

    NSString * propertyStr = @"propertyStr";
    if ([class haveProperty:propertyStr]) {
        class.propertyStr = @"avalue";
    }

我不知道我是否说得清楚。

4 个答案:

答案 0 :(得分:4)

您想检查您的班级是否有名为propertyStr的财产,您可以这样做:

NSString *propertyStr = @"propertyStr";
if ([class respondsToSelector:NSSelectorFromString(propertyStr)]) {
    class.propertyStr = @"avalue";
}

答案 1 :(得分:2)

由于@property和@syn会自动创建getter和setter,我们可以使用下面的代码检查是否有任何类响应特定的消息(setter)

NSString *propertyStr = @"propertyStr";
if ([class respondsToSelector:NSSelectorFromString(propertyStr)]) 
{
[class setValue:@"Value" forKey:propertyStr];
}

答案 2 :(得分:1)

尝试使用 respondsToSelector

<强>语法

 if ([class respondsToSelector:@selector(property)])
        [[class property] setProperty:@"value"];

示例

if ([UINavigationBar respondsToSelector:@selector(appearance)])
    [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackOpaque];

答案 3 :(得分:1)

你可以试试这个..

NSString *selName = @"yourPropertyName";
SEL selector = NSSelectorFromString(selName);

if ([className respondsToSelector:selector])
    className.selName = /* your action*/;