我在代码中有这个,但我想确定不仅对象响应选择器,而且值的类型与属性的类型相对应。
if ([object respondsToSelector:NSSelectorFromString(propName)])
[object setValue:value forKey:propName];
例如,如果 value 是 boolean 并且 property 是 string,我希望 if 短路。
我在代码中有这个,但我想确定不仅对象响应选择器,而且值的类型与属性的类型相对应。
if ([object respondsToSelector:NSSelectorFromString(propName)])
[object setValue:value forKey:propName];
例如,如果 value 是 boolean 并且 property 是 string,我希望 if 短路。
您也可以通过覆盖您的设置器来完成此操作。这样您就不需要检查您设置属性的每个不同的地方。
- (void) setSomeString:(NSString *)someString {
if (![someString isKindOfClass:[NSString class]]) return;
_someString = someString;
}
使用这个类别NSObject+Properties,该类别扩展 NSObject 增加了检查的可能性,除其他外,如果一个对象有一个属性。
- (BOOL) hasPropertyNamed: (NSString *) name;
- (BOOL) hasPropertyNamed: (NSString *) name ofType: (const char *) type;
- (BOOL) hasPropertyForKVCKey: (NSString *) key;