Eigenschaftstyp oder Klasse unter Verwendung von Reflektion
Ich habe mich gefragt, ob es möglich ist, die Klasse oder den primitiven Typ einer Objekteigenschaft zu bestimmen. Es ist ziemlich einfach, alle Eigenschaftsnamen und -werte abzurufen.SO antworte
Gibt es also eine Möglichkeit, den Typ der Eigenschaftsklasse abzurufen, während die Eigenschaft keinen oder keinen Wert hat?
Beispielcode
@interface MyObject : NSObject
@property (nonatomic, copy) NSString *aString;
@property (nonatomic, copy) NSDate *aDate;
@property NSInteger aPrimitive;
@end
@implementation MyObject
@synthesize aString;
@synthesize aDate;
@synthesize aPrimitive;
- (void)getTheTypesOfMyProperties {
unsigned int count;
objc_property_t* props = class_copyPropertyList([self class], &count);
for (int i = 0; i < count; i++) {
objc_property_t property = props[i];
// Here I can easy get the name or value
const char * name = property_getName(property);
// But is there any magic function that can tell me the type?
// the property can be nil at this time
Class cls = magicFunction(property);
}
free(props);
}
@end