2013-05-06 14 views
0

我有以下代碼行將內容或標籤設置爲日期。如果年份是確定的值,則執行不同的功能

cell.birthdayLabel.text = [[GlobalBirthdaysEditor instance] getFormattedDateString:[birthday getDate]]; 

我需要找出在今年等於1604,如果是,不顯示它。

如何從該對象中拉出年份,然後更改結果,以便每月只打印一次?

我到目前爲止的代碼是:

NSString *dateString = [[GlobalBirthdaysEditor instance] getFormattedDateString:[birthday getDate]]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
NSDate *date = [[NSDate alloc] init]; 
date = [dateFormatter dateFromString:dateString]; 
[dateFormatter release]; 

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]]; 

NSInteger year = [components year]; 

if (year == 1604) 
{ 
    cell.birthdayLabel.text = yearStr; //SHOULD OUTPUT JUST MONTH AND DAY 
} else { 
    cell.birthdayLabel.text = [[GlobalBirthdaysEditor instance] getFormattedDateString:[birthday getDate]]; 
} 

但是,這是行不通的。它運行,但日期總是第二個。爲什麼是這樣?

謝謝!

+0

你爲什麼要將年份轉換爲字符串?只要做'if(year == 1604)'。 – rmaddy 2013-05-06 18:20:19

+0

只是這樣做,所以我可以在別處使用它,忘記改回它。我將編輯代碼。但是,將其更改爲此並且仍然沒有效果... – samiles 2013-05-06 18:22:15

回答

1

您的代碼有幾個問題。它應該是:

NSDate *date = [birthday getDate]; 
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date]; 
NSInteger year = [components year]; 

if (year == 1604) { 
    // Adjust this as needed 
    NSString *yearStr = [NSString stringWithFormat:@"%d", year]; 
    cell.birthdayLabel.text = yearStr; //SHOULD OUTPUT JUST MONTH AND DAY 
} else { 
    NSString *dateString = [[GlobalBirthdaysEditor instance] getFormattedDateString:date]; 
    cell.birthdayLabel.text = dateString; 
} 

的主要問題是要傳遞一個新的日期到components:方法調用,而不是通過你的實際日期。

沒有理由在NSStringNSDate之間來回切換。由於您已經有權訪問NSDate,請使用它。

+0

完美地工作,謝謝! – samiles 2013-05-06 18:31:12