我在代码中有这个,但我想确定不仅对象响应选择器,而且值的类型对应于属性的类型。
if ([object respondsToSelector:NSSelectorFromString(propName)])
[object setValue:value forKey:propName];
例如,如果value是布尔值并且属性是字符串,我希望if为短路。
答案 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;