Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法在Swift中循环通过计数器_Ios_Objective C_Iphone_Loops_Swift - Fatal编程技术网

Ios 无法在Swift中循环通过计数器

Ios 无法在Swift中循环通过计数器,ios,objective-c,iphone,loops,swift,Ios,Objective C,Iphone,Loops,Swift,我有一个工作倒计时计时器,我可以手动设置并从这个值倒计时 我现在想要实现的是,将我的间隔计数器设置为3,然后循环倒计时计时器,循环我在计数器中设置的次数,当最后一个间隔完成时,计时器完成 听起来很简单,我知道我在某处需要一个循环,但我所尝试的一切都已经成功了,这是我在添加循环之前的当前代码。尝试添加while语句而不是if语句,但没有成功 我现在添加了这个循环,但仍然没有乐趣。有人知道怎么做吗 func runIntervalTimer() { timerForIntervals = NSTi

我有一个工作倒计时计时器,我可以手动设置并从这个值倒计时

我现在想要实现的是,将我的间隔计数器设置为3,然后循环倒计时计时器,循环我在计数器中设置的次数,当最后一个间隔完成时,计时器完成

听起来很简单,我知道我在某处需要一个循环,但我所尝试的一切都已经成功了,这是我在添加循环之前的当前代码。尝试添加while语句而不是if语句,但没有成功

我现在添加了这个循环,但仍然没有乐趣。有人知道怎么做吗

func runIntervalTimer() {

timerForIntervals = NSTimer.scheduledTimerWithTimeInterval(1, target: self, 
selector: Selector("updateTimeInterval"), userInfo: nil, repeats: true)

}


func updateTimeInterval() {

do {

if intervalCountdown > 0 {
    intervalHasBeenSet = true
    intervalCountdown--
    IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60, 
    intervalCountdown%60) }
} while intervalHasBeenSet == true

    intervalHasBeenSet = false
    intervalCountdown = 0
    IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60, 
    intervalCountdown%60)



 }

@IBAction func InterValTimerIncrease(sender: AnyObject) {

 intervalCountdown++
 IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60, 
 intervalCountdown%60)


 }



 @IBAction func IntervalTimerDecrease(sender: AnyObject) {

 intervalCountdown--
 IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,  
 intervalCountdown%60)
  }


@IBAction func IntervalStart(sender: AnyObject) {



    runIntervalTimer()



}

您可能处于无限循环中:

  do {
      if intervalCountdown > 0 {
         intervalHasBeenSet = true
         intervalCountdown--
         IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60, 
         intervalCountdown%60) }
  } while intervalHasBeenSet == true
您的条件是
intervalHasBeenSet==true
,但在循环中它从未被设置为false,因此它永远无法退出

如果你想让计时器倒计时,我想你需要做的就是:

  func updateTimeInterval() {
       println(intervalCountdown)
       if intervalCountdown > 0 {
         intervalCountdown--
         IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60, 
         intervalCountdown%60) 
       }
  }
由于
NSTimer
应在每个间隔调用
updateTimeInterval
,因此此函数中不需要循环

要使计时器倒计时多次,需要一个额外的变量(
intervalNum
):


感谢您的回答,在我添加循环之前,它实际上已经设置为您的代码,当计数器归零时,它所做的只是停止,间隔计数器没有减少或计时器再次启动。还有其他想法吗?我更新了我的帖子,加入了日志声明。当你点击增加和减少功能时,值会说什么?当计时器达到零时,你实际需要发生什么?不用担心,我只需要将间隔减少1,然后计时器从之前设置的开始重新启动。当间隔为零时,计数器停止。它基本上只是一个间歇健身教练。例如,我可以设置5个间隔20秒,20秒完成我们转到4秒,20秒完成,我们转到3秒等我知道我差一点似乎做不好太好了谢谢我很快就要回来了,我会试一试,让你知道是怎么回事:-)
  func updateTimeInterval() {
       println(intervalCountdown)
       if intervalCountdown > 0  && intervalNum > 0 {
         // countdown in the current interval
         intervalCountdown--
         IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60, 
         intervalCountdown%60) 
       }
       else
       {
         // move on to the next interval
         intervalNum--
         intervalCountdown = 20 // or grab the original value from somewhere
       }

       if (intervalNum == 0)
       {   
           // stop the timer
           timerForIntervals.invalidate() 
       }
  }