Swift 快速计时器没有遵循正确的间隔

Swift 快速计时器没有遵循正确的间隔,swift,nstimer,ios13,Swift,Nstimer,Ios13,我正在尝试创建一个测验应用程序,当计时器过期时(即10秒,我希望Timmer的间隔为1秒),它会自动重置,然后提取下一个问题,然后Timmer再次从10秒开始重新启动。。。但我的问题是,当第一个问题加载时,计时器没有遵循固定的时间间隔,它显示的时间间隔为2。。。i、 e.10,8,6。。然后对于第二个问题,它每隔3秒跳一次,同样地,间隔也会增加 var countTime = 10.0 func handleNextQuestion() throws { nextQues

我正在尝试创建一个测验应用程序,当计时器过期时(即10秒,我希望
Timmer
的间隔为1秒),它会自动重置,然后提取下一个问题,然后
Timmer
再次从10秒开始重新启动。。。但我的问题是,当第一个问题加载时,计时器没有遵循固定的时间间隔,它显示的时间间隔为2。。。i、 e.10,8,6。。然后对于第二个问题,它每隔3秒跳一次,同样地,间隔也会增加

var countTime = 10.0
func handleNextQuestion() throws {
            nextQuestion()
            if questionCounter == allQuestions.list.count-1{
                finishButton.isHidden = false
                nextButton.isHidden = true
                //scoreLbl.text = "\(score)"
            }
        }
        
        func nextQuestion(){
            showResultView(isCorrect: (question?.isAnswerCorrect)!)
            questionCounter = questionCounter + 1
            question = fetchQuestion()
            setQuizView(question: question!)
            
            
        }
        
        @objc func update() {
            if(countTime > 0) {
                countTime = countTime - 1
                self.countDownLabel.text = String(countTime)
            }else{
                timer.invalidate()
                countTime = 10.0
                do{
    
                    try handleNextQuestion()
    
                }
                catch{
                       moveToResultView()
                }
                
            }
        }
     
        
       
        func startTimer() {
            timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)
        }
        func setQuizView(question:Question)  {
            self.countDownLabel.text = "10"
          startTimer()
            startTimer()
            questionLabel.text =  question.questionText
            ansLbl1.text =  question.answer1
            ansLbl2.text =  question.answer2
            ansLbl3.text =  question.answer3
            ansLbl4.text =  question.answer4
            
            if question.selectedAnswer == Constants.DEFAULT_ANSWER {
                for checkBoxItem in checkBoxlist{
                    checkBoxItem.isChecked = false
                }
                
            }
            
        }
        
func setQuizView(问题:问题)

调用
startTimer()
两次。我想这就是这种行为的原因。在每一个新问题上,计时器启动两次,但只失效一次,因此秒数跳转一个额外的exach问题


只需删除对
startTimer()

的一个调用,您在setQuizViewsorry中调用了startTimer()两次,因为我在复制粘贴时修改了代码,删除了部分代码,所以碰巧添加了额外的startTimer(),这不是原始代码的一部分。但它仍然有问题编辑问题谢谢@Yunnosch你说得对原谅我的错误创建一个新的每个人都在学习。你做得很好。玩得开心。这不是你代码的一部分,但是计时器对象是如何声明的,它看起来好像有多个计时器在运行?现在您再次调用startTimer()两次。保存前请仔细检查您的帖子。