gpt4 book ai didi

swift - 快速比较两个日期以检查一天是否已经过去

转载 作者:行者123 更新时间:2023-11-30 11:39:59 25 4
gpt4 key购买 nike

在我的程序中,我有一个“重置”按钮,我想在用户每天第一次打开应用程序时显示该按钮。因此,当 View 加载时,我创建一个变量来保存今天是哪一天(即:19),然后将该天设置为用户默认值。然后,我使用 if 语句来确定用户默认值是否等于实际日期。我无法完全弄清楚“重置”按钮的隐藏和取消隐藏。

这是我到目前为止的代码。我对 Swift 很陌生,所以任何有关我的方法的建议或反馈将不胜感激!谢谢

class UserInfoViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let date = Date()
let calendar = Calendar.current


let dateToday = calendar.component(.day, from: date)
let dateToCompare = calendar.component(.day , from: date)

UserDefaults.standard.set(dateToday, forKey: "userDefaultDate")

let userDefaultDate = UserDefaults.standard.value(forKey: self.userDefaultDate) as? Int


if userDefaultDate != dateToCompare {

resetLabel.isHidden = false
UserDefaults.standard.set(dateToCompare, forKey: "userDefaultDate")

}

if userDefaultDate == dateToCompare {

resetLabel.isHidden = true
}
}

最佳答案

您的代码无法运行。

逻辑应该是:

  • UserDefaults获取日期,
  • 将其与当天进行比较。
  • 如果值不相等,请将新的一天保存到 UserDefaults
<小时/>
class UserInfoViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let dateToday = Calendar.current.component(.day, from: Date())
let dateToCompare = UserDefaults.standard.integer(forKey: "userDefaultDate")
if dateToCompare != dateToCompare {
UserDefaults.standard.set(dateToday, forKey: "userDefaultDate")
resetLabel.isHidden = false
} else {
resetLabel.isHidden = true
}
}
}

注意:

切勿将 value(forKey:UserDefaults 一起使用。
有很多方便的方法,对于对象使用 object(forKey:

编辑

保存Date对象并使用CalendarisDateInToday进行比较更加可靠

class UserInfoViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let dateToday = Date()
let calendar = Calendar.current
let dateToCompare = UserDefaults.standard.object(forKey: "userDefaultDate") as? Date ?? Date.distantPast
if calendar.isDateInToday(dateToCompare) {
resetLabel.isHidden = true
} else {
UserDefaults.standard.set(dateToday, forKey: "userDefaultDate")
resetLabel.isHidden = false
}
}
}

关于swift - 快速比较两个日期以检查一天是否已经过去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358191/

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