在Xcode 4之前,我曾經使用NSDate initFromString
,但現在不推薦使用它,並在Xcode 4.2中產生錯誤。所以我跳到使用NSDateFormatter dateFromString
,但遇到了一個問題,我調用的方法從字符串獲取日出日期,從字符串獲取日落日期以確定它是白天還是晚上(如此相同的方法)。第一個調用工作正常,但第二個調用返回nil。我決定去看看它是否是重複的,所以我創建了以下簡單的方法,並傾倒到另一個項目,無害的地方:NSDateFormatter dateFromString在第一次調用後以同樣的方法產生nil
- (void)testDateFormatter
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat: @"yyyy-MM-dd hh:mm:ss Z"];
NSString *srDateTimeString = @"2011-11-09 07:08:00 -0800";
NSString *ssDateTimeString = @"2011-11-09 17:08:00 -0800";
NSDate *sunriseDateTime = [formatter dateFromString: srDateTimeString];
NSDate *sunsetDateTime = [formatter dateFromString: ssDateTimeString];
return;
}
第一次調用返回正確的日期。第二次調用返回nil。我嘗試了幾個變體(例如創建兩個單獨的NSDateFormatters,預初始化日期,將日期初始化爲當前時間,然後重新分配),但沒有做任何預期的事情。
有人知道這裏發生了什麼嗎?因爲我在任何地方都沒有發現任何有關此錯誤的參考信息(錯誤#10420498)。
傑克
當我編輯我看到你沒有()testDateFormatter後,似乎是一個錯字,所以我糾正它。只是讓你知道。 –
@Anders,這不是一個錯字,Objective-C不會將它的參數列表放在括號中。 – goldfire
爲了澄清,你做了兩個單獨的NSDateFormatter對象,發送了兩個單獨的字符串dateFromString _separately_,這仍然發生? – goldfire