我正在使用运行时功能来获取属性的类型(感谢eJames帮助我找出这种方式)。 属性的属性字符串看起来是这样的:如何使用@encode()获取@“NSArray”Objective-C
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;
}
但由于苹果可以随时更改的类型定义字符串,我想产生这种@“的NSArray”字符串类型。我试过用@encode(),但它没有工作:
NSString *encodedType = [NSString stringWithUTF8String:@encode(NSArray *)];
那么我怎样才能生成这种类型的字符串?还是有更好的方法来检查这个属性是否包含数组类型?
没有人有想法吗? – Enyra 2009-04-24 14:17:33