如何检测30秒的持续时间

Byt*_*yte 1 nstimer nstimeinterval ios swift

我这里有一个案例研究.其中我有一个名为的函数

loadData(action:String)
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad上我将此函数称为loadData("sync")现在我想将此函数调用为loadData("load"),如果它的调用间隔在30秒之间.假设我想用"sync"调用此函数,如果已经过了30秒,如果没有,那么"加载"

请指导我.

Bha*_*iya 5

有一种解决方案可用于NSTimer计算秒数.当你第一次调用该loadData("sync")方法时启动计时器.并增加第二个.当你必须回忆这个功能时,检查计算的秒数是否大于30然后再sync打电话load.看下面的代码.

var timer : NSTimer!
var second = 0

override func viewDidLoad() {
    super.viewDidLoad()

    // here you start your first sync method.

    loadData("sync")

    // start the timer here so you can get how many seconds before you started or called your method.
    timer = NSTimer()
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(ViewController.calculateSeconds), userInfo: nil, repeats: true) 
}

func calculateSeconds() {
     second += 1
}
Run Code Online (Sandbox Code Playgroud)

现在,当你必须回忆loadData方法时,检查第二个变量,如果它> 30,则调用syncelse load.并且invalidate计时器将停止监视或计算第二个计时器.

像这样.

func whatever() {
     if second > 30 {
         loadData("sync") 
     } else {
         loadData("load")
     }

     second = 0
     timer.invalidate()
     timer = nil
}
Run Code Online (Sandbox Code Playgroud)