SwiftUI, как связать DatePicker с переменной типа «TimeStamp»? - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь связать UIDatePicker с переменной, которая поступает прямо с сервера, но проблема в переменной имеет тип TimeStamp и UIDatePicker* Для 1008 * требуется тип Дата .

if(self.shouldShowDatePicker)
{
    DatePicker(selection:self.$taskData.fields[index].dateField.valueTime , displayedComponents: .date)
    Text("DatePicker")
}

Теперь я знаю, что эта переменная self.$taskData.fields[index].dateField.valueTime имеет тип TimeStamp , и, поскольку вы можете видеть, что это Переменная относится к очень сложному массиву полей, поэтому я не могу изменить структуру. Пожалуйста, дайте мне знать, что является возможным решением. Спасибо

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете обернуть его в динамический c Binding, как показано ниже

if(self.shouldShowDatePicker)
{
   DatePicker(selection: Binding<Date>(
       get: { Date(timeIntervalSince1970: self.taskData.fields[index].dateField.valueTime) },
       set: { self.taskData.fields[index].dateField.valueTime = $0.timeIntervalSince1970 } ), 
       displayedComponents: [.date]) { Text("DatePicker") }
}
0 голосов
/ 29 января 2020

Расширение должно сработать

extension Double {
    var _boundDate: Date {
        get {
            return Date(timeIntervalSince1970: self )
        }
        set {
            self = newValue.timeIntervalSince1970
        }
    }
    public var boundDate: Date {
        get {
            return _boundDate
        }
        set {
            _boundDate = newValue
        }
    }
}

Ваша привязка к DatePicker будет выглядеть следующим образом

self.$taskData.fields[index].dateField.valueTime.boundDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...