在我們的iphone應用程序中,我們解析了api調用得到的日期。日期正確返回並且是有效的日期。現在只有在某些設備上,它會在意外發現零的錯誤時崩潰,同時展開可選值。這裏是有問題的代碼:iPhone日期格式化程序隨機崩潰
//formatDate(date: date, format: FullDateFormat)
class func formatDate(date: String, format: String)->String{
if date.characters.count == 0 {return "" }
let formatter = DateFormatter()
formatter.dateFormat = Constants.FullDateFormat
let nsDate = formatter.date(from: date)
formatter.dateFormat = format
return formatter.string(from: nsDate!)
}
nsDate沒有被格式化,因爲它是零。
的Constants.FullDateFormat是定義爲「M/d/yyyy的H:mm:ss的一個」靜態字符串作爲日期將總是以這種格式
到類函數的調用將會看起來像這樣
let newDate = Helpers.formatDate(date: "9/27/2017 9:26:51 AM", format: "h:mm a")
一些設備崩潰,而大多數設備崩潰。如果我們不使用類功能,則應用程序可以正常工作。我沒有看到任何原因,所以如果有人看到爲什麼會發生這種情況和可能的解決方案,請讓我知道。
這可能是重複的,但並未顯示在我執行的任何搜索中。感謝社區,他們指出了另外一個類似的問題,其答案已經在stackoverflow。如果這是重複的,我很抱歉。
不應使用強迫的展開'nsDate',你應該把它放在警戒聲明中。大多數情況下,在你的應用程序崩潰的設備上,其他一些設置(例如語言環境)是不同的,這些會導致解析日期問題,因爲你沒有指定'DateFormatter'使用的相當多的信息 –
Thanks Martin R我在搜索時沒有看到這種情況。我不介意刪除它,但它可以幫助其他人。我會通過編輯並指出您發佈的問題。 –
解決方案與「Martin R」的建議相同,但我理解Micah的困惑。 – kulss