目标C确定值是否适合设置

时间:2013-02-11 18:42:09

标签: objective-c

我在代码中有这个,但我想确定不仅对象响应选择器,而且值的类型对应于属性的类型。

   if ([object respondsToSelector:NSSelectorFromString(propName)]) 
      [object setValue:value forKey:propName];

例如,如果value是布尔值并且属性是字符串,我希望if为短路。

2 个答案:

答案 0 :(得分:2)

您也可以通过覆盖您的二传手来完成此操作。这样您就不需要在设置属性的每个不同位置签入。

- (void) setSomeString:(NSString *)someString {
    if (![someString isKindOfClass:[NSString class]]) return;

    _someString = someString;
}

答案 1 :(得分:1)

使用此类别NSObject+Properties,类别扩展NSObject,增加了检查对象是否具有属性等的可能性。

- (BOOL) hasPropertyNamed: (NSString *) name;
- (BOOL) hasPropertyNamed: (NSString *) name ofType: (const char *) type;
- (BOOL) hasPropertyForKVCKey: (NSString *) key;