2013-07-08 29 views
-4

我想結合字符串日期和時間,然後將其轉換爲NSDate。我的代碼是:將對象添加到NSMutableArray導致崩潰

NSMutableArray *arrayOfDatesAsDates = [[NSMutableArray alloc] init]; 

NSDateFormatter *dateAndTimeFormatter = [[NSDateFormatter alloc] init];  
[dateAndTimeFormatter setLocale:enUSPOSIXLocale];       
[dateAndTimeFormatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 

NSLog(@"here"); 
//create an NSDate with todays date and the right prayer time 
NSString *prayerDateString = [curDate stringByAppendingString: @" "]; 
prayerDateString = [prayerDateString stringByAppendingString: timeOfMagrib]; 
NSDate *prayerDateAndTime = [dateAndTimeFormatter dateFromString:prayerDateString]; //convert string back to date 
NSLog(@"nsdate %@", prayerDateAndTime); 
[arrayOfDatesAsDates addObject:prayerDateAndTime]; 

輸出到日誌prayerDateAndTime的是2013年7月8日二十時26分00秒+0000預期和錯誤消息是Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

它在[arrayOfDatesAsDates addObject:prayerDateAndTime];行崩潰。

這是爲什麼?

非常感謝

+1

「這是爲什麼?」 ' - [__ NSArrayM insertObject:atIndex:]:object can not be nil'' –

+0

您是否調試並檢查了值?是否被多次調用,以便在日誌中看到一些好的結果? – Wain

+2

* dateFromString *可能返回* nil *。 –

回答

1

看起來[dateAndTimeFormatter dateFromString:@"2013-07-08 20:26:00 +0000"]將返回零,因爲你的日期字符串"2013-07-08 20:26:00 +0000"不符合您的dateFormat: @"dd-MM-yyyy HH:mm" ...嘗試更換後運行:

[dateAndTimeFormatter setDateFormat:@"dd-MM-yyyy HH:mm"] 

[dateAndTimeFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"] 
// you really want this to match:  2013-07-08 20:26:00 +0000 
// yyyy: 2013, four digit year 
// MM: two digit numerical month 
// dd: day of month 
// HH: 24 hour hour 
// mm: two digit minute 
// ss: two digit second, zero padded 
// ZZZ: time zone, {Z,Z,Z} -> RFC 822 GMT format 

此處給出的日期格式的格式字符串: http://www.unicode.org/reports/tr35/tr35-25.html#Date_Field_Symbol_Table

獲取時區字符串:https://stackoverflow.com/a/3299389/2022405