我从collectionView日历中选择了一个想要格式化为日期的日期,并将其设置为同一View Controller中tableView的标题。但是,尝试格式化它并将其设置为标题时,出现错误。
这是我的错误代码:
var selectedDate = Date!
let formatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = Calendar.current.timeZone
dateFormatter.locale = Calendar.current.locale
dateFormatter.dateFormat = "yyyy MM dd"
return dateFormatter } ()
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss +zzzz"
let dateForTableViewHeader = formatter.string(from: selectedDate) // Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
return dateForTableViewHeader
}
对于错误,我的控制台将打印:selectedDate Date?无
如果我将其全部更改为仅此行
return "\(String(describing: selectedDate))"
然后将所选日期打印为标题标题:可选(2018-09-25 07:00:00 +0000)
我想将其转换为日期格式,例如2018年9月25日。如果它直接打印selectedDate的值,为什么当我尝试将其转换为其他日期格式时却出现nil错误?
答案 0 :(得分:0)
import Foundation
var selectedDate = Date()
let formatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.timeZone = Calendar.current.timeZone
dateFormatter.locale = Calendar.current.locale
return dateFormatter
} ()
func printDate() -> String{
print("selected date \(selectedDate)")
formatter.dateFormat = "yyyy-MM-dd"
let newDate = formatter.string(from: selectedDate)
return newDate
}
printDate()