如何限制通过时间快速点击的按钮

时间:2019-07-10 21:51:32

标签: swift firebase firebase-realtime-database

我需要一个按钮,用户可以单击该按钮以使所有人都知道他们正在参加某个位置,但是我只希望每24小时最多可以单击3次,具体取决于按钮的内容,因为每个单元格只有一个按钮的tableView

我还没有尝试过任何东西,因为我从来没有用过时间快速了解它

@IBAction func myButtonClicked(_ sender: Any) {
    DataService.ds.REF_BARS.child(imageTitleLabel.text!).child("GoingCount").observeSingleEvent(of: .value, with: { (snapshot) in
        print(snapshot.value as! String)
        self.countString = snapshot.value as! String
        self.countInt = Int(self.countString)! + 1
        DataService.ds.REF_BARS.child(self.imageTitleLabel.text!).updateChildValues(["GoingCount": String(self.countInt)])
    })
}

如果您可以添加用户在该按钮内或按钮周围单击的前后条件

1 个答案:

答案 0 :(得分:3)

您只需1个按钮即可完成

if let storedDate = UserDefaults.standard.object(forKey:"StoredDate") as? Date {

      let toDate = Calendar.current.date(byAdding: .day, value:1, to:storedDate)
      let cliks = UserDefaults.standard.integer(forKey:"NumOfClicks")

      if Date() <= toDate { 
          if cliks < 3 {
                // do what you need and increase NumOfClicks by 1
          }
          else {
             // no more clicks this day
          }
      }
      else { 
         // date exceed may be reset the date and cliks to 1
      }
}
else {
     // first attempt 
     UserDefaults.standard.set(Date(),forKey:"StoredDate")
     UserDefaults.standard.set(1,forKey:"NumOfClicks")
     // do what you need once from here 
}

对于数组处理,您可以将上面的每个键都视为数组,就像[Date] / [Int]

那样存储/检索