0

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

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

例如,如果 value 是 boolean 并且 property 是 string,我希望 if 短路。

4

2 回答 2

2

您也可以通过覆盖您的设置器来完成此操作。这样您就不需要检查您设置属性的每个不同的地方。

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

    _someString = someString;
}
于 2013-02-11T20:25:21.007 回答
1

使用这个类别NSObject+Properties,该类别扩展 NSObject 增加了检查的可能性,除其他外,如果一个对象有一个属性。

- (BOOL) hasPropertyNamed: (NSString *) name;
- (BOOL) hasPropertyNamed: (NSString *) name ofType: (const char *) type;
- (BOOL) hasPropertyForKVCKey: (NSString *) key;
于 2013-02-11T20:16:07.787 回答