0
我已經問過類似的問題,但他們都關心使用塊的特定值的數組。這有點不同,我想在初始化時使用塊填充數組的值。除了NSArray的子類來做到這一點,是否有另一種類似於這樣的方式: 在這種情況下,我用一週中的日子填充數組,其中今天總是在中間。這樣做的我的「經典」的方法是:NSArray動態初始化並填充一個塊
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE"];
NSMutableArray *test = [[NSMutableArray alloc] init];
for (int i = -3; i < 4; i++) {
[test addObject:[dateFormatter stringFromDate:[[NSDate date] dateByAddingTimeInterval:60*60*24*i]]];
}
理想情況下,我想要做什麼,是初始化數組,並與被分配動態使用塊,像這樣的值填充它:
NSArray *array = [[NSArray alloc] initWithObjects:^(){ for (int i = -3; i < 4; i++) {
return [dateFormatter stringFromDate:[[NSDate date] dateByAddingTimeInterval:60*60*24*i]];
}}, nil];
現在上面的代碼什麼也沒有創建,並且正確,因爲方法initWithObjects需要對象而不是塊,此外,塊會執行一次,只返回一個對象。那麼這是可能的/可行的,還是我需要子類化NSArray來創建一個類似initWithBlock的方法?
我想我正在尋找的是一個初始值設定項,它使用一個塊,它的行爲像一個python for yield生成器。但如果這是不可能的,那麼使用塊將簡單地過度複雜化一個直截了當的問題。謝謝您的意見 ! –