Swift 游戏结束倒计时 + 1 小时

Swift Countdown from game end + 1 hour

我正在尝试在游戏之间创建一个计时器,以便用户在失去生命后必须等待 5 分钟才能再次玩游戏。但是我不确定最好的方法是什么。

我还需要它来防止用户只是在“设置”中编辑他们的时间。

实现此目标的最佳方法是什么?

目前我正在经历在钥匙串中设置 NSDate() 对象的过程:

let date = NSDate()

然后使用它来获取值:

let date = gameActions["EndFight"] as! NSDate
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components([ .Hour, .Minute, .Second], fromDate: date)
        let Hour = components.hour
        let Minute = components.minute

        print("Hour: \(Hour)")
        print("Mins: \(Minute)")

但是小时总是returns为1。环顾四周之后,我突然想到我可能会以完全错误的方式来解决这个问题。

然后我打算反转这个 Swift Timer 教程来倒计时..

这是正确的轨道吗?

需要澄清的主要问题:

我如何确定自上次比赛开始后是否已过去 5 分钟?

执行此操作的正确方法是在您的后端使用 UTC 0 的时间戳。您无法防止用户更改其 phone 上的时间,因此不要依赖那里的任何时间戳。

如果您想阻止用户在 x 时间内访问某项功能,请在后端记录他们的 activity。

然后比较两个日期,试试这个:

let calendar = NSCalendar.currentCalendar()
let dateComponenets = calendar.components(NSCalendarUnit.Minute, fromDate: serverActivityLogDate, toDate: serverCurrentDate, options: [])
let minutes = dateComponenets.minute