Опять Таймер на SwiftUI


#1

все привет, ребята кто разбирается, никак не могу сделать) специфический таймер)

короче есть расписание типа:

утро = 5:30
полдень = 12:30
послеполдень = 16:30
вечер = 19:00
ночь = 22:00

мне нужно помочь написать таймер, который будет отчитывать каждый раз обратный отчет до каждого времени расписания. То есть. меня есть функция которая получает это расписание, оно каждый день меняется. Нужен таймер который будет бегать по этому расписанию меняющемся каждый день.
Уже что только не испробовал, только обычные таймеры получаются. Спасибо


#2

ну вот что-то по типу такого, только жить он у вас должен не на уровне контроллера, а на уровне приложения
И комплетишен блок замените, на что-нибудь получше

protocol TimerManagerProtocol: class {

    var dates: [ClosedRange<Date>] { get }
    
    func update(dates: [ClosedRange<Date>])
    
    var completition: ((Date) -> Void)? { get set }
}


class TimerManager: TimerManagerProtocol {
    
    private (set) var dates: [ClosedRange<Date>]
    var completition: ((Date) -> Void)?
    
    private var timer: Timer?
    
    
    init(dates: [ClosedRange<Date>] = []) {
        self.dates = dates
        
        timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { [weak self] (timer) in
            let date = Date()
            
            if self?.dates.contains(where: { $0.contains(date) }) == true {
                self?.completition?(date)
            }
        })
    }
    
    deinit {
        timer?.invalidate()
        timer = nil
    }
    
    func update(dates: [ClosedRange<Date>]) {
        self.dates = dates
    }
}

#3

В общем у меня функция, которая получает время UTC в форматдейтер

public func formattedPrayerTime(prayer: Prayer, times: PrayerTimes?) -> some View {
guard let time = times?.time(for: prayer) else {
return Text("-")
}
return Text("(time, formatter: dateFormatter)")
}

функция выдает some View, и в блоке some View вызывается как self,
так же есть
@Binding var times: PrayerTimes?

let prayers: [Prayer] = [.fajr, .sunrise, .dhuhr, .asr, .maghrib, .isha]

сам PrayerTimes это файл где есть публичная структура с вычислениями времени каждого.
,
Теперь я не могу понять как засунуть полученное время в этот класс)))

я на Свифт сижу 4 месяц. Сорри если гружу

Могу проект прислать на почту