gpt4 book ai didi

swift - 如何检测 Swift 中的日期变化

转载 作者:行者123 更新时间:2023-12-05 08:40:52 24 4
gpt4 key购买 nike

我希望我的应用在另一天发生变化时采取行动。

所以,在我的 appDelegate 中,我放了

func applicationSignificantTimeChange(_ application: UIApplication){
//this one fires
}

在应该更新其内容的 ViewController 中,我这样做:

override func viewDidLoad() {
NotificationCenter.default.addObserver(self, selector: #selector(self.dayChanged(notification:)), name: Notification.Name("significantTimeChangeNotification"), object: nil)

}

@objc func dayChanged(notification: NSNotification){
//this one doesn't fire
}

不知何故,当 AppDelegate 中的函数被调用时,观察者似乎对该事件视而不见。

这是语法,还是只是对机制的误解?

最佳答案

您需要为 "UIApplicationSignificantTimeChangeNotification" 添加一个观察者:

NotificationCenter.default.addObserver(self, selector: #selector(dayChanged), name: UIApplicationSignificantTimeChangeNotification, object: nil)

对于 Swift 4.2 或更高版本

NotificationCenter.default.addObserver(self, selector: #selector(dayChanged), name: UIApplication.significantTimeChangeNotification, object: nil)

注意:如果您的意图是在日期更改时收到通知,您可以使用 .NSCalendarDayChanged ("NSCalendarDayChangedNotification") 而不是 UIApplication.significantTimeChangeNotification.

NotificationCenter.default.addObserver(self, selector: #selector(dayChanged), name: .NSCalendarDayChanged, object: nil)

然后将选择器方法添加到您想要监视日期变化的 View Controller 中:

@objc func dayChanged(_ notification: Notification) {

}

关于swift - 如何检测 Swift 中的日期变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53021632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com