我不明白为什么这会崩溃。我正在使用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()
}
}
}
}
}
答案 0 :(得分:0)
这实际上很奇怪...
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