Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 我正在为我的游戏使用计时器,希望显示当前分数并保存高分。我该怎么做?_Ios_Swift_Nstimer - Fatal编程技术网

Ios 我正在为我的游戏使用计时器,希望显示当前分数并保存高分。我该怎么做?

Ios 我正在为我的游戏使用计时器,希望显示当前分数并保存高分。我该怎么做?,ios,swift,nstimer,Ios,Swift,Nstimer,计时器从零开始,然后上升。你坚持的时间越多,分数就越高。如何显示当前分数并使用计时器保存高分?我让计时器工作,但我被这个问题困住了。我在斯皮特基特和斯威夫特!谢谢 func updateTimer() { fractions += 1 if fractions == 100 { seconds += 1 fractions = 0 } if seconds == 60 { minutes += 1

计时器从零开始,然后上升。你坚持的时间越多,分数就越高。如何显示当前分数并使用计时器保存高分?我让计时器工作,但我被这个问题困住了。我在斯皮特基特和斯威夫特!谢谢

func updateTimer() {

    fractions += 1
    if fractions == 100 {

        seconds += 1
        fractions = 0
    }

    if seconds == 60 {

        minutes += 1
        seconds = 0
    }

    let fractionsString = fractions > 9 ? "\(fractions)" : "0\(fractions)"
    let secondsString = seconds > 9 ? "\(seconds)" : "0\(seconds)"
    let minutesString = minutes > 9 ? "\(minutes)" : "0\(minutes)"


    timerString = "\(minutesString):\(secondsString).\(fractionsString)"
    countUpLabel.text = timerString

}

 //EDIT..............

  func saveHighScore() {

    let defaults=NSUserDefaults()


    let highscore=defaults.integerForKey("highscore")


    if(timerString > highscore)
    {
        defaults.setInteger(timerString, forKey: "highscore")
    }
    let highscoreshow = defaults.integerForKey("highscore")

    endOfGameHighScoreLabel.text = String(highscoreshow)


    }

与其尝试存储并递增三个单独的值,不如存储一个整数score,然后每次计算单独的值进行显示

然后比较并保存您的高分,这是一个简单的整数比较

func updateTimer() {
    self.score++
    countUpLabel.text=self.timeStringForScore(self.score)
}


func timeStringForScore(score:Int) -> String {
    let minutes:Int=score/6000;
    let seconds:Int=(score-minutes*6000)/100
    let fractions:Int = score-minutes*6000-seconds*100
    return String(format: "%02d:%02d:%02d", minutes,seconds,fractions)
}

func saveHighScore() {  
    let defaults=NSUserDefaults()
    let highscore=defaults.integerForKey("highscore")
    if(self.score > highscore)
    {
        defaults.setInteger(self.score, forKey: "highscore")
    }

    endOfGameHighScoreLabel.text = self.timeStringForScore(highscore)
}

更简单的方法是保持秒(或百分之一秒)的递增计数,并在需要显示时进行整数除法以获得分/秒/百分之一百。您的代码看起来应该显示当前分数(或时间)您的question@Paulw11计时器工作正常。问题是,当游戏结束时,我希望显示当前分数,如果分数高于当前分数,则保存分数。您可以使用NSUserDefaults来保留分数值。同样,如果你只存储一个整数,这会更容易。我得到了要显示的当前分数,但我在尝试保存高分时出错。我得到这个错误:二进制运算符>不能应用于String和Int类型的操作数。我将更新这个问题,以便您可以看到我所做的@Paulw11@Paulw11你明白我想做什么吗?