Более простое решение: сохраните только целое число дня и добавьте наблюдателя, который будет уведомлен об изменении дня
override func viewDidLoad() {
super.viewDidLoad()
let today = Calendar.current.component(.day, from: Date())
let lastRe = UserDefaults.standard.integer(forKey: "lastRe")
if today != lastRe {
updateView(day: today)
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(forName: .NSCalendarDayChanged, object:nil, queue: .main) { [weak self] _ in
let today = Calendar.current.component(.day, from: Date())
self?.updateView(day: today)
}
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
NotificationCenter.default.removeObserver(self, name:.NSCalendarDayChanged, object:nil)
}
func updateView(day : Int) {
nextDay()
UserDefaults.standard.set(day, forKey: "lastRe")
}