Ios 使用字符串作为名称来设置属性值
我的项目中有大量重复的代码,我正试图缩小它们。以这件作品为例:Ios 使用字符串作为名称来设置属性值,ios,objective-c,Ios,Objective C,我的项目中有大量重复的代码,我正试图缩小它们。以这件作品为例: self.Day11.delegate = (id)self; self.Day12.delegate = (id)self; self.Day13.delegate = (id)self; self.Day14.delegate = (id)self; self.Day15.delegate = (id)self; self.Day16.delegate = (id)self; self.Day17.delegate = (id)
self.Day11.delegate = (id)self;
self.Day12.delegate = (id)self;
self.Day13.delegate = (id)self;
self.Day14.delegate = (id)self;
self.Day15.delegate = (id)self;
self.Day16.delegate = (id)self;
self.Day17.delegate = (id)self;
self.Day18.delegate = (id)self;
self.Day19.delegate = (id)self;
我想做的是,我可以使用for循环或类似的东西来缩小它,如下所示:
for (int i = 1 ; i<=9; i++) {
NSString *var = [NSString stringWithFormat:@"Day1%d",i];
self.var.delegate = (id)self;
}
我知道这样不行,有没有可能的方法来做这样的事情?不,不,不
@property (nonatomic,strong) NSArray *arrayOfDays;
现在扔掉所有这些日常物品,用所有这些日常物品填充self.arrayOfDays
然后
for(int i=0; i<[self.arrayOfDays count]; ++i) {
[[self.arrayOfDays objectAtIndex:i] setDelegate: self];
}
最好参考Daij Dan的评论:
[self.arrayOfDays setValue:self forKeyPath:@"delegate"];
不,不,不
@property (nonatomic,strong) NSArray *arrayOfDays;
现在扔掉所有这些日常物品,用所有这些日常物品填充self.arrayOfDays
然后
for(int i=0; i<[self.arrayOfDays count]; ++i) {
[[self.arrayOfDays objectAtIndex:i] setDelegate: self];
}
最好参考Daij Dan的评论:
[self.arrayOfDays setValue:self forKeyPath:@"delegate"];
听起来你需要一个数组。而且,这些对id的转换是多余和可怕的。听起来你需要一个数组。而且,那些id的转换是多余的和可怕的。谢谢你,这正是我想要的!抱歉,代码不好,我是objective-c的新手。等等,使用第二种方法,我从不兼容的类型*const uu strong'1行获取分配给'id uitextfielddelegate'的黄色标志::setValue:forKeyPath:[self.arrayOfDays setValue:self forKeyPath:@delegate];谢谢,这正是我想要的!抱歉,代码不好,我是objective-c的新手。等等,使用第二种方法,我从不兼容的类型*const uu strong'1行获取分配给'id uitextfielddelegate'的黄色标志::setValue:forKeyPath:[self.arrayOfDays setValue:self forKeyPath:@delegate];