2014-04-09 110 views
0

我是iOS的新手,我很難在2年內獲得數月和數年的收入。我把它們放入NSArray。我所能得到的只有一年,但除此之外,這些年份不會增加以反映年份的變化。請幫忙?由於iOS-獲取2年以上的月份和年份

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++; 
+0

您的代碼在哪裏執行。 –

回答

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++; 
+0

它沒有得到正確的年份,它從2015年到2014年,而不是到2016年 – user3481831

+0

好吧,for循環不會增加到12以上,所以你不會超過12個月。我對我的帖子進行了編輯。 – Dko

+0

謝謝Dko。工作完美。 – user3481831