我正在使用运行时函数来获取属性的类型(感谢 eJames 帮助我找出这种方法)。属性的属性字符串如下所示:
T@"NSArray",&,Vstuff
我需要检查属性类型是否为数组,目前我正在这样做:
- (BOOL)valueForKeyIsArray:(NSString *)key fromTagret:(id)target
{
NSString *lowerCaseKey = [self convertToKVCKey:key];
objc_property_t property = class_getProperty([target class], [lowerCaseKey UTF8String]);
NSString *propertyAttrs = [NSString stringWithUTF8String:property_getAttributes(property)];
NSString *encodedType = @"@\"NSArray\"";
NSRange range = [propertyAttrs rangeOfString:encodedType options:NSLiteralSearch];
return range.location != NSNotFound;
}
但是由于Apple可以随时更改类型定义字符串,所以我想生成这个@“NSArray”类型字符串。我用@encode() 试过了,但是没有用:
NSString *encodedType = [NSString stringWithUTF8String:@encode(NSArray *)];
那么如何生成这种类型的字符串呢?或者有没有更好的方法来检查这个属性属性是否包含数组类型?