我正在使用運行時功能來獲取屬性的類型(感謝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