为啥 DatePicker 在 Date 变为 nil 时会崩溃? [复制]
Posted
技术标签:
【中文标题】为啥 DatePicker 在 Date 变为 nil 时会崩溃? [复制]【英文标题】:Why DatePicker crash when Date becomes nil? [duplicate]为什么 DatePicker 在 Date 变为 nil 时会崩溃? [复制] 【发布时间】:2020-08-21 10:24:19 【问题描述】:我不明白为什么会崩溃。我正在使用 ios14 和 XCode 12.0 beta 4。 如果我删除 DatePicker 它可以正常工作。有什么想法吗?
struct MyView: View
@State private var myDate: Date?
var body: some View
Form
if let selection = Binding<Date>($myDate)
DatePicker("myDate", selection: selection)
Button("Delete myDate")
myDate = nil
else
Button("Add myDate")
myDate = Date()
【问题讨论】:
这能回答你的问题吗? SwiftUI DatePicker Binding optional Date, valid nil 【参考方案1】:这其实很奇怪……
Binding<Date>($myDate)
返回日期设置为“2001 年 1 月 1 日凌晨 1:00”的绑定。
当State
是Date
(带有String
,它按预期返回nil
)时,似乎会发生这种行为:
struct A
@State var date: Date? = nil
@State var str: String? = nil
var dateBinding: Binding<Date>?
Binding($date)
var stringBinding: Binding<String>?
Binding($str)
A().dateBinding // not nil
A().dateBinding!.wrappedValue // "Jan 1, 2001 at 1:00 AM"
A().stringBinding // nil
而且它似乎在不使用属性包装器的情况下也能正常工作:
let stateDate = State<Date?>(initialValue: nil)
Binding<Date>(stateDate.projectedValue) // nil
这可能是 Xcode 12 beta 的问题。
编辑:
这似乎只与状态有关:
struct A
@State var date1: Date? = nil
A().date1 // Jan 1, 2001 at 1:00 AM"
State<Date?>(initialValue: nil).wrappedValue // nil
【讨论】:
以上是关于为啥 DatePicker 在 Date 变为 nil 时会崩溃? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
jQuery UI Datepicker - 为啥它是裸露的?
如何在 jQuery("#delivery_date").datepicker( joomla plugin display only
JQuery Datepicker 返回 Date 对象类型