Сравните будущую дату с текущей датой SwiftUI - PullRequest
1 голос
/ 23 апреля 2020

У меня есть следующее:

struct ContentView: View {
var body: some View {
    VStack{
        Button(action: {
            let soon = Date().addingTimeInterval(100)

            if(soon == Date()) {
                print("Time is up!")
            }
        }) {
            Text("Alert")
        }
    }
}
}

Я пытаюсь добавить немного времени в ближайшее время, а затем, когда текущее время == в ближайшее время, затем выполнить печать, как я могу это сделать?

То, что я хочу: у меня есть текущее время, затем я добавляю несколько секунд к этому времени, и когда это время истекло, делайте что-то, мне нужно Date (), потому что я буду работать с определенными c разами Например, если сейчас 10 утра, я хочу добавить 3 минуты, а затем в 10:03 отобразить предупреждение.

1 Ответ

1 голос
/ 24 апреля 2020

Попробуйте приведенный ниже код, надеюсь, он вам поможет.

На Button нажмите, чтобы назначить новую дату согласно вашему требованию.

class TimeCounter: ObservableObject {

    @Published var timerEnd = false
    var timer : Timer?

    var nextDate : Date? = nil {
        didSet {
            if let date = self.nextDate {
                let interval = Date().distance(to: date)
                if self.timer == nil {
                    self.timer = Timer.scheduledTimer(withTimeInterval: interval, repeats: false) {_ in
                        self.timerEnd = true
                        self.timer = nil
                        self.nextDate = nil
                    }
                }
            }
        }
    }
}

struct ContentView: View {

    @ObservedObject var timeCounter = TimeCounter()

    var body: some View {
        Button(action: { //change as per requirement
            self.timeCounter.nextDate = Date().addingTimeInterval(10) 
        }) {
            Text("Display alert after 10 seconds")
        }
        .alert(isPresented: .constant(self.timeCounter.timerEnd)) {
            return Alert(title: Text("Alert"), message: Text("Alert after updated date") , dismissButton: Alert.Button.default(Text("OK"), action: {
                self.timeCounter.timerEnd = false
            }))
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...