如何以名称作为字符串访问自己类的属性

时间:2016-06-29 12:49:43

标签: objective-c properties

我正在寻找一种方法从其名称访问我的一个属性。   例如,我在特定类中有3个属性

 @property (nonatomic, weak) UIImageView *image1;  
 @property (nonatomic, weak) UIImageView *image2;  
 @property (nonatomic, weak) UIImageView *image3;

我有一个方法

 - (void)accessProperty:(NSString *)propertyName{
 //image1, image2 or image3 will be passed here.
 //how can I access the property with its name ?????
 }

任何帮助将不胜感激。

让我更准确地提及我的需要。   我有3 imageView但我想将图像设置为特定的imageView,其名称与我传递给方法的名称匹配。例如,如果我将该方法称为     [self accessProperty:@"image1"];然后应将图片设置为imageView1

1 个答案:

答案 0 :(得分:1)

你想要valueForKey。这是Key-Value coding(KVC):

for (NSUInteger i = 1; i <= 3; i++) {
    NSString *key = [NSString stringWithFormat:@"image%u", i];
    UIImageView *value = [self valueForKey:key];
}