Iphone 如何使用NSString获取NSObject的属性

Iphone 如何使用NSString获取NSObject的属性,iphone,objective-c,oop,Iphone,Objective C,Oop,我正在为iPhone开发。是否有任何方法可以使用包含属性名称的NSString获取属性?比如: @interface MyLovelyClass : NSObject @property (nonatomic) double test; -(double) returnDoubleProperty:(NSString *) propertyName; 然后叫它 MyLovelyClass *mlc=[[MyLovelyClass alloc] init]; double value=[ml

我正在为iPhone开发。是否有任何方法可以使用包含属性名称的NSString获取属性?比如:

@interface MyLovelyClass : NSObject

@property (nonatomic) double test;

-(double) returnDoubleProperty:(NSString *) propertyName;
然后叫它

MyLovelyClass *mlc=[[MyLovelyClass alloc] init];
double value=[mlc returnDoubleProperty:@"test"];

我知道如果属性数量有限,我可以手动编写if-else语句,为每个输入字符串返回值。但是,有什么方法可以实现这个程序吗?

您希望使用KVC键值编码,它完全符合您所描述的,但不需要实现任何方法就可以工作。但它确实适用于对象,因此您的double将被包装在一个NSNumber中:


您希望使用KVC键值编码,它完全按照您所描述的那样工作,但不需要实现任何方法。但它确实适用于对象,因此您的double将被包装在一个NSNumber中:


由于属性是方法,因此可以通过PerformSelect:调用它们。要使用NSSelectorFromString从字符串创建选择器,请使用NSSelectorFromString。double将被包装在NSNumber类型的id对象中,因此您需要通过调用doubleValue将其拉回:


由于属性是方法,因此可以通过PerformSelect:调用它们。要使用NSSelectorFromString从字符串创建选择器,请使用NSSelectorFromString。double将被包装在NSNumber类型的id对象中,因此您需要通过调用doubleValue将其拉回:


它会与NSObject的任何后代一起工作吗?Wain,似乎是实现我想要的最好方法。非常感谢你!它会与NSObject的任何后代一起工作吗?Wain,似乎是实现我想要的最好方法。非常感谢你!
@property (nonatomic, strong) NSNumber *test;

NSNumber *value = [mlc valueForKey:@"test"];
SEL toCall = NSSelectorFromString(@"test");
double value=[[mlc performSelector:toCall] doubleValue];