我試圖比較時間,以下link,但它崩潰在我身上。我有幾乎相同的代碼,但它不斷崩潰在dateComponents
線或sorted()
線取決於我把功能放在哪裏。斯威夫特:地圖函數發現零,而解包一個可選值
func setCurrentTime(times: [String]) {
let formatter = DateFormatter()
formatter.dateFormat = "h: mm a"
let timeMap = times.map {
Calendar.current.dateComponents([.hour, .minute], from: formatter.date(from: $0)!)
} // Crashes here ...
let upcomingTIme = timeMap.map {
Calendar.current.nextDate(after: Date(), matching: $0, matchingPolicy: .nextTime)!
}
print(upcomingTime) // Returns []
let nextTime = upcomingTIme.sorted().first! // Crashes here too, error line shown below
print(nextTime) // Doesn't get printed...
}
ERROR:
[]
fatal error: unexpectedly found nil while unwrapping an Optional value
如果我通過在陣列或硬編碼在它仍然崩潰的功能的陣列。
日期格式應該是「h:mm a」 – vacawama
dateformatter無法用輸入格式解析輸入,所以它返回'nil',並且因爲你有力量解開結果,你會崩潰。如果你修正你的格式字符串,它可能會工作,但更防禦性地使用'flatmap'來過濾可選項並且避免強制解包 – Paulw11
你能提一下傳入的'[String]'是什麼?這會更清楚...... –