我想从字符串中获取类的属性。 例如:
NSString * propertyStr = @"propertyStr";
if ([class haveProperty:propertyStr]) {
class.propertyStr = @"avalue";
}
我不知道我是否说得清楚。
答案 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*/;