如果与最后存储的日期匹配,则启用按钮 +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() 都不能安全地执行此类操作。两者都很容易被客户修改。如果它很重要,你也应该做一个服务器检查。