如何保存用户快速按下按钮的日期?
我希望代码每天运行一次,但我想要完成此操作的方式是在单击该按钮后禁用该按钮,然后在超过24小时后重新启用该按钮。如何保存用户快速按下按钮的日期?
下面的代码是否正确,以保存用户按下按钮的日期?
if distance < radius{
Total_Points += 10
pointsLabel.text = "Total Points: \(Total_Points)"
getPointsOutlet.isEnabled = false
let clickdate = UserDefaults.standard
if var timeList = clickdate.object(forKey: "timeList") as? [Date]{
timeList.append(Date())
clickdate.set(timeList, forKey: "timeList")
} else {
clickdate.set([Date()], forKey: "timeList")
}
clickdate.synchronize()
}
let PointsDefault = UserDefaults.standard
PointsDefault.setValue(Total_Points, forKey: "Total Points")
你可以当你在按键敲击保存使用Userdefaults
然后你ViewDidAppear,viewDidLoad中内UIApplicationWillEnterForeground
通知方法就把检查从用户默认获得DATEVALUE,然后将日期值取的差异这种方式实现当前日期和上次存储日期,并相应地启用了您的按钮。
lazy var userDefaults: UserDefaults = {
return UserDefaults.standard
}()
func ViewDidLoad() {
UserDefaults.set(Date(), forKey:"date")
userDefaults.synchronize()
}
func someMethodWhereYouWantToGetValue() {
guard let value = userDefaults.object(forKey: "date") as? Date else
{return}
print(value)
}
谢谢,但我怎么保存日期?我试图在我的代码上面,但我不知道它是否正确 –
试试这个: - 让def = UserDefaults.standard \t \t def.set(NSDate(),forKey:“日期“) \t \t print(def.object(forKey:”date“)) –
它的工作,但我得到一场战争宁为打印行说“表达式隐式强制从'任何?'任何'” –
您的代码
let clickdate = UserDefaults.standard
if var timeList = clickdate.object(forKey: "timeList") as? [Date]{
timeList.append(Date())
clickdate.set(timeList, forKey: "timeList")
} else {
clickdate.set([Date()], forKey: "timeList")
}
clickdate.synchronize()
是罚款添加日期保存日期的数组。你可以拉的是到一个单独的功能:
func addDateToDefaults(date: Date? = nil) {
let defaults = UserDefaults.standard
if date = nil {
date = Date()
}
if var timeList = defaults.object(forKey: "timeList") as? [Date]{
timeList.append(date)
defaults.set(timeList, forKey: "timeList")
} else {
defaults.set([date!], forKey: "timeList")
}
}
然后,你可以调用从一个按钮动作:
@IBAction func buttonClicked(_ sender: UIButton) {
addDateToDefaults()
//The rest of your button action code goes here
}
通过上面的功能addDateToDefaults()
,你可以通过在特定的日期,或离开关闭日期参数,它会将当前日期附加到日期数组中。
每次调用UserDefaults.standard时都不需要创建新变量,您可以按原样使用它(例如'UserDefaults.standard.setValue(...)'或定义它一次并重用它(例如'let defaults = UserDefaults.standard'和更高版本'defaults.setValue(...)' – Paolo
谢谢,我会改变这种情况,但保存用户按下按钮的日期又如何呢? –