2013-10-09 43 views
1

我確定我錯過了一些簡單的東西。任何幫助表示讚賞。NSDateFormatter結果爲null NSString

在下面的代碼[ri EventDate] ='2014-02-07';

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
NSString *ed = [dateFormatter stringFromDate:[ri EventDate]]; 
NSLog(@"eventDate: %@ -> %@", [ri EventDate], ed); 

的結果是:EVENTDATE:2014-02-07 - >(空)

BTW - 一旦我得到這個解析爲一個字符串,我會改變日期格式。首先第一件事情......

+4

我從來不知道日期記錄在這樣一個簡單的格式。我的賭注是'[ri EventDate]'已經是一個字符串。案件已結案。 – Joe

+0

從NSObject類 - @property NSDate * EventDate; – alockrem

+2

NSObject肯定沒有屬性EventDate – vikingosegundo

回答

1

您的EventDate已被意外指定了字符串。您需要追蹤此作業發生的位置。如果您在確定指定字符串的位置時遇到問題,您可以通過將屬性聲明爲非原子,實現setter並設置條件斷點來調試該屬性。一旦代碼中斷,您將有權訪問分配了錯誤值的堆棧跟蹤。完成調試

斷點條件時請記住刪除​​如果原子是必要的,並刪除了定製的setter:EventDate != nil && ![EventDate isKindOfClass:[NSDate class]]

Debug

+0

非常感謝。我相信你是對的。我會跟蹤並解決這個問題。 – alockrem

+0

確認:NSDate存儲爲NSString。我不知道這是可能的。強制它成爲NSDate後,它按預期工作。再次感謝大家的幫助。 – alockrem

0

的代碼是正確的,[ri EventDate]可能是一個NSString,如果你NSLog()一個NSDate,輸出類似於2013-10-09 19:27:30 +0000,而不是2014年2月2日。

您必須先將[ri EventDate]轉換爲NSDate。例如:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd"]; 

NSDate *date = [df dateFromString:[ri EventDate]]; 
+0

非常感謝。我相信你是對的。我會跟蹤並解決這個問題。 – alockrem