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];