簡體   English   中英

使用dateformatter將字符串轉換為tableView的titleForHeader的日期,但得到nil錯誤

[英]Converting date from string with dateformatter for tableView's titleForHeader but getting nil error

我從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日期?

如果我將其全部更改為僅此行

return "\(String(describing: selectedDate))"

然后打印所選日期作為標題標題:可選(2018-09-25 07:00:00 +0000)

我想將其轉換為日期格式,如2018年9月25日。如果它直接打印selectedDate的值,為什么當我嘗試將其轉換為其他日期格式時卻出現nil錯誤?

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM