SWIFT:从文本字段格式化为日期不起作用

Posted

技术标签:

【中文标题】SWIFT:从文本字段格式化为日期不起作用【英文标题】:SWIFT: Formatting from text field to Date not working 【发布时间】:2019-02-23 11:53:14 【问题描述】:

我有以下功能,我需要标签根据所选日期更新周数。日期选择由 UIDatePicker 进行。

如果我写 print(pickedDate) 我会得到 UIDatePicker 刚刚选择的日期,所以这似乎工作正常。 但是,如果我 print(selectedDate) 我得到 nil,因此公式中出现错误 Fatal error: Unexpectedly found nil while unwrapping an Optional value

这是我的代码:

func selectWeek () 

        let formatter = DateFormatter()

        let pickedDate = dateEntry.text
        let selectedDate = formatter.date(from: pickedDate!)


        if (weekTwoIntervalJan! ... weekThreeIntervalJan!).contains(selectedDate!) 
            weekNrLabel.text = "Week 3"
        
        else if (weekThreeIntervalJan! ... weekFourIntervalJan!).contains(selectedDate!) 
            weekNrLabel.text = "Week 4"
        


        else if (startDateFebDate! ... weekOneIntervalFeb!).contains(selectedDate!) 
            weekNrLabel.text = "Week 1"
        

        else if (weekOneIntervalFeb! ... weekTwoIntervalFeb!).contains(selectedDate!) 
            weekNrLabel.text = "Week 2"
        
        else if (weekTwoIntervalFeb! ... weekThreeIntervalFeb!).contains(selectedDate!) 
            weekNrLabel.text = "Week 3"
        
        else if (weekThreeIntervalFeb! ... weekFourIntervalFeb!).contains(selectedDate!) 
            weekNrLabel.text = "Week 4"
        


        else 
            print("fail")




【问题讨论】:

formatter.date(from: pickedDate!) 和后来的selectedDate!,会导致崩溃,因为它是零。 pickedDate 的价值是什么?您需要设置 dateFormatter 的 format pickedDate 返回 "String? "Wednesday, February, 27"。我尝试使用不同的日期格式,但这并没有什么不同 DateFormatter 不是一个神奇的工具。你需要设置它的格式。 我现在将格式设置为 formatter.dateFormat = "EEEE, MMMM, dd"。仍然收到错误 - 致命错误:在展开可选值时意外发现 nil 【参考方案1】:

你的UIDatePicker叫什么名字?

也许你想做(用你的UIDatePicker的名字替换datePicker):

let selectedDate = datePicker.date

【讨论】:

我也尝试过使用 datePicker.date 代替文本字段,但 datePicker 值在选择后不会更新,它只是显示新值的文本字段。当我单击文本字段并重新打开日期选择器时,它会恢复为今天的日期,而不是文本字段上的日期。

以上是关于SWIFT:从文本字段格式化为日期不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Swift“字符串中的日期”转换不起作用,但格式适用于在线服务?

插入日期选择器后 Jquery 表单验证不起作用

swift - 从 var(UITextField 输入)中删除空格不起作用

我的格式日期功能在 Microsoft Access 中不起作用

将 UITextField 的 inputView 属性设置为 UIPicker 在 Swift 中不起作用

拖放在 Xcode 中不起作用