0

私はiOSが初めてで、2年間何ヶ月も何年も取得するのに苦労しています。私はそれらをに入れていNSArrayます。私が得ることができるのは1年だけですが、それを超えると、年は年の変化を反映して増加しません。助けてください?ありがとう

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 ループは、1 ではなく currentMonth で初期化されているため、12 回の反復を実行する前に終了し、結果は翌年の月を取得していません。さらに、for ループは 12 を超えてインクリメントしないため、12 か月を超えることはありません — これは 2 年ではありません。

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 に答える