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“字符串中的日期”转换不起作用,但格式适用于在线服务?
swift - 从 var(UITextField 输入)中删除空格不起作用
我的格式日期功能在 Microsoft Access 中不起作用