为啥 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&lt;Date&gt;($myDate) 返回日期设置为“2001 年 1 月 1 日凌晨 1:00”的绑定。

StateDate(带有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 对象类型

我不想在 DatePicker 中显示“SELECT DATE”消息

为啥 DB2 数据库中的 DATE 中包含时间组件?

Android DatePicker 和 Java 的 Date