IOS setValue:根据属性名称设置属性

IOS setValue类似于Java里面的反射机制。

使用这个方法,根据属性名称来设置属性。这个方法,在拥有大量按一定规则命名的属性时尤其有用。

比如,某个类,有如下代表每列的数组,命名格式是:@”column%dArray” :

1@property (strong, nonatomic) NSArray *column1Array;
2@property (strong, nonatomic) NSArray *column2Array;
3@property (strong, nonatomic) NSArray *column3Array;
4@property (strong, nonatomic) NSArray *column4Array;
5@property (strong, nonatomic) NSArray *column5Array;

如果一个个给属性赋值,那要写大量的重复性代码。

利用setValue方法,只要在一个循环里,就可以设置好这些属性:

1for (int i=1; i<=5; i++) {
2    UIImageView *appleView = [[UIImageView alloc] initWithImage:apple];
3    UIImageView *barView = [[UIImageView alloc] initWithImage:bar];
4    UIImageView *cherryView = [[UIImageView alloc] initWithImage:cherry];
5    UIImageView *lemonView = [[UIImageView alloc] initWithImage:lemon];
6    UIImageView *sevenView = [[UIImageView alloc] initWithImage:seven];
7    NSArray *imageViewArray = [[NSArray alloc] initWithObjects:appleView,barView,cherryView,lemonView,sevenView, nil];
8    NSString *fieldName = [[NSString alloc] initWithFormat:@"column%dArray",i];
9    NSLog(@"set value for key:%@",fieldName);
10    [self setValue:imageViewArray forKey:fieldName];
11}

同样,在读取属性的时候,也可以根据当前的条件生成属性名称,用属性名称读取属性:

1- (UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
2{
3    NSString *arrayName = [[NSString alloc] initWithFormat:@"column%dArray",component+1];
4    NSArray *array = [self valueForKey:arrayName];
5
6    return [array objectAtIndex:row];
7}

 


转载于:https://my.oschina.net/u/1244156/blog/194746

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值