如果与最后存储的日期匹配,则启用按钮 +1
enable a button if matches the last date stored +1
我是 Swift 的新手,但正在变得越来越好。
我已设法禁用按钮并存储日期。在这一点上我已经达到了我的知识的尽头,所以我希望有人能提供帮助。
第二天需要通过检查存储的日期来启用该按钮,因此用户每天只能使用该功能一次。
代码如下;
import Foundation
import UIKit
class tryForAFiver : UIViewController {
@IBOutlet weak var drinkImage: UIImageView!
@IBOutlet weak var redeemButton: UIButton!
override func viewDidLoad() {
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
@IBAction func redeemButton(_ sender: Any) {
let cocktailNumber = arc4random_uniform(32)
drinkImage.image = UIImage(named: "cocktailList\(cocktailNumber)")
let userDefaults = UserDefaults.standard
if var timeList = userDefaults.object(forKey: "timeList") as? [NSDate]
{
timeList.append(NSDate())
userDefaults.set(timeList, forKey: "timeList")
}
else
{
userDefaults.set([NSDate()], forKey: "timeList")
}
userDefaults.synchronize()
if let timeList = UserDefaults.standard.object(forKey: "timeList") as? [NSDate]
{
print(timeList)
}
self.redeemButton.isEnabled = false
}
}
在此先感谢您的帮助。
我对你的代码做了一些修改。可以使用 Date()
而不是 NSDate()
吗?在 Swift.
中使用起来更容易
按钮操作:
@IBAction func redeemButton(_ sender: Any) {
let userDefaults = UserDefaults.standard
if var timeList = userDefaults.object(forKey: "timeList") as? [Date]
{
timeList.append(Date())
userDefaults.set(timeList, forKey: "timeList")
}
else
{
userDefaults.set([Date()], forKey: "timeList")
}
userDefaults.synchronize()
if let timeList = UserDefaults.standard.object(forKey: "timeList") as? [Date]
{
print(timeList)
}
self.redeemButton.isEnabled = false
}
并且在 viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if let timeList = UserDefaults.standard.object(forKey: "timeList") as? [Date], let lastDay = timeList.last
{
if Calendar.current.isDateInToday(lastDay) {
self.redeemButton.isEnabled = false
}
else {
self.redeemButton.isEnabled = true
}
}
}
这应该会让您走上正轨。一句警告:UserDefaults() 和 Date() 都不能安全地执行此类操作。两者都很容易被客户修改。如果它很重要,你也应该做一个服务器检查。
我是 Swift 的新手,但正在变得越来越好。
我已设法禁用按钮并存储日期。在这一点上我已经达到了我的知识的尽头,所以我希望有人能提供帮助。
第二天需要通过检查存储的日期来启用该按钮,因此用户每天只能使用该功能一次。
代码如下;
import Foundation
import UIKit
class tryForAFiver : UIViewController {
@IBOutlet weak var drinkImage: UIImageView!
@IBOutlet weak var redeemButton: UIButton!
override func viewDidLoad() {
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
@IBAction func redeemButton(_ sender: Any) {
let cocktailNumber = arc4random_uniform(32)
drinkImage.image = UIImage(named: "cocktailList\(cocktailNumber)")
let userDefaults = UserDefaults.standard
if var timeList = userDefaults.object(forKey: "timeList") as? [NSDate]
{
timeList.append(NSDate())
userDefaults.set(timeList, forKey: "timeList")
}
else
{
userDefaults.set([NSDate()], forKey: "timeList")
}
userDefaults.synchronize()
if let timeList = UserDefaults.standard.object(forKey: "timeList") as? [NSDate]
{
print(timeList)
}
self.redeemButton.isEnabled = false
}
}
在此先感谢您的帮助。
我对你的代码做了一些修改。可以使用 Date()
而不是 NSDate()
吗?在 Swift.
按钮操作:
@IBAction func redeemButton(_ sender: Any) {
let userDefaults = UserDefaults.standard
if var timeList = userDefaults.object(forKey: "timeList") as? [Date]
{
timeList.append(Date())
userDefaults.set(timeList, forKey: "timeList")
}
else
{
userDefaults.set([Date()], forKey: "timeList")
}
userDefaults.synchronize()
if let timeList = UserDefaults.standard.object(forKey: "timeList") as? [Date]
{
print(timeList)
}
self.redeemButton.isEnabled = false
}
并且在 viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if let timeList = UserDefaults.standard.object(forKey: "timeList") as? [Date], let lastDay = timeList.last
{
if Calendar.current.isDateInToday(lastDay) {
self.redeemButton.isEnabled = false
}
else {
self.redeemButton.isEnabled = true
}
}
}
这应该会让您走上正轨。一句警告:UserDefaults() 和 Date() 都不能安全地执行此类操作。两者都很容易被客户修改。如果它很重要,你也应该做一个服务器检查。