0

我是 iOS 新手,我很难在 2 年的时间里获得几个月和几年的时间。我将它们放入一个NSArray. 我所能得到的只是一年,但除此之外,年份不会增加以反映年份的变化。请帮忙?谢谢

NSDate  *todayDate = [NSDate date];
NSDateComponents *todayComponents=[[NSCalendar currentCalendar]      components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:todayDate];
NSMutableArray  *monthNameArray   = [[NSMutableArray alloc] init];

int currentMonth = [todayComponents month];
int currentYear = [todayComponents year];
int nextYear = currentYear + 1;

int month = 1;
int year;
for(int m = currentMonth ; month <= 12; m++){

    int nextMonth = m % 12;

    if(nextMonth < currentMonth){
        year = nextYear;
    } else {
        year = currentYear;
    }
    NSString *allMonths = [NSString stringWithFormat:@"%@ %d",[[dateFormatter monthSymbols]objectAtIndex:nextMonth], year];
    [monthNameArray addObject:allMonths];
    month++;
4

1 回答 1

0

for 循环在经过 12 次迭代之前退出,因为它是用 currentMonth 而不是 1 初始化的,所以结果是没有得到明年的月份。此外,for 循环的增量不会超过 12,因此不会超过 12 个月——这不是两年。

int month = currentMonth-1; // Make zero-based for use with monthSymbols
int year = currentYear;
for(int m = 0 ; m < 24; m++){

    if (month > 11) 
    {
      // The month has transitioned to the next year
      month = 0;
      ++year;
    }
    NSString *allMonths = [NSString stringWithFormat:@"%@ %d",[[dateFormatter monthSymbols]objectAtIndex:month], year];
    [monthNameArray addObject:allMonths];
    month++;
于 2014-04-09T13:14:03.110 回答