首先,真機與模擬器的最大的區別在于
- iOS 真機是大小寫敏感的。
- 真機和模擬器的Local設定可能會不同。模擬器的默認local是 "en_US",而真機就視地區而定了。
所以用一下的代碼在真機上運行就可能會出錯了
func createDate(fromString string: String) -> Date {
let formatter = DateFormatter()
formatter.dateFormat = "EEE MMM dd HH:mm:ss ZZZ yyyy"
let date = formatter.date(from: string)
return date! //fatal error: unexpectedly found nil while unwrapping an Optional value
}
所以改成
func regularDate(fromString str: String) -> Date {
let formatter = DateFormatter()
formatter.dateFormat = "EEE MMM dd HH:mm:ss ZZZ yyyy"
formatter.locale = Locale(identifier: "en_US")
formatter.timeZone = TimeZone(identifier: "UTC") // 最好這也加上去
let date = formatter.date(from: str)
return date!
}