【发布时间】:2019-04-02 01:25:46
【问题描述】:
我正在尝试包含计时器,以便在应用程序的初始启动日期后一周、一个月、2 个月等出现按钮。
我使用过Date.addingTimeInterval(请参见下面的代码),但在较长的时间段(周/月)内似乎效果不佳。 Swift 文档建议使用日历,但我不知道该怎么做。
override func viewDidLoad() {
super.viewDidLoad()
if installedDate == nil {
installedDate = Date()
let timer = Calendar.current
Button1.isHidden = true
Button2.isHidden = true
Button3.isHidden = true
}
else {
print("Not first run")
print(installedDate!)
let Button1Date = Date().addingTimeInterval(604800) //for after 1 week
let Button2Date = Date().addingTimeInterval(2592000) //for after 1 month
let Button3Date = Date().addingTimeInterval(5184000) //for after 2 months
if installedDate == Button1Date {
Button1.isHidden = false
}
if installedDate == Button2Date {
Button2.isHidden = false
}
if installedDate == Button3Date {
Button.isHidden = false
}
}
}
var installedDate: Date? {
get {
return UserDefaults.standard.object(forKey: "installedDateKey") as? Date
}
set {
UserDefaults.standard.set(newValue, forKey: "installedDateKey")
}
}
比较发布日期和我需要的预期日期的更有效方法是什么?
【问题讨论】:
-
无论用户是否将应用程序置于前台,这是您希望在一个月的第二个准确发生的操作,还是您希望在用户第一次打开应用程序时发生的操作一个月后的应用程序?
-
正如@bsod 提到的,您的问题是您以毫秒为单位比较日期。如果你想这样做,你需要将它们添加到
installedDate,而不是Date(),否则这将永远不会起作用。 -
@bsod 是的,这是我希望在一个月过去后发生的动作。每次他们打开应用程序时,它都会检查自安装日期以来是否已过去一个月。我的下一步是添加一个通知,让他们知道他们有一个新按钮可供查看,我也不知道该怎么做。
-
@Wheeeeeecode 检查我的答案,我想我解决了你的问题。
-
@Wheeeeeecode,如果你没有注意到,我更新了我的答案来解决你的问题。