2014-04-09 106 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