Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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 如何改写swift3中的高分_Ios_Swift_Swift3_Save_Nsuserdefaults - Fatal编程技术网

Ios 如何改写swift3中的高分

Ios 如何改写swift3中的高分,ios,swift,swift3,save,nsuserdefaults,Ios,Swift,Swift3,Save,Nsuserdefaults,我下面的代码计算游戏的反应时间。总反应时间以totalTime计算。现在代码节省了反应时间。但是,totalTime始终等于高分。因此,不保存高分,只保存当前分数。我希望代码保存最低的totalTime,如果它小于当前最低的totalTime import UIKit class winViewController: UIViewController { @IBOutlet var score2: UILabel! @IBOutlet var winningLabel: UILabel!

我下面的代码计算游戏的反应时间。总反应时间以
totalTime
计算。现在代码节省了反应时间。但是,
totalTime
始终等于高分。因此,不保存高分,只保存当前分数。我希望代码保存最低的
totalTime
,如果它小于当前最低的
totalTime

import UIKit
class winViewController: UIViewController {
  @IBOutlet var score2: UILabel!
  @IBOutlet var winningLabel: UILabel!
  @IBOutlet var foxMill: UILabel!
  @IBOutlet var hhighscore: UILabel!

  public var LebelText: String?
  public var LebelText2: String?
  public var LebelText3: String?
  public var LebelText4: String?

  override func viewDidLoad() {
    super.viewDidLoad()
    timeCalculation()
    loadState()
  }

  func saveScore(score: Double) {
    // Instantiate user defaults
    let userDefaults:UserDefaults = UserDefaults.standard

    // Set your score
    userDefaults.set(score, forKey: "highScore")

    // Sync user defaults
    userDefaults.synchronize()
  }

  func loadState() {
    let userDefaults = UserDefaults.standard
    let score = userDefaults.double(forKey: "highScore")
    foxMill.text = "High Score: \(score)"
  }

  func timeCalculation(){
    guard let unwrapedText = self.LebelText2 else { return }
    guard let unwrapedText2 = self.LebelText else { return }
    guard let unwrapedText3 = self.LebelText3 else { return }
    guard let unwrapedText4 = self.LebelText4 else { return }

    if let myInt = Double(unwrapedText), let myInt2 = Double(unwrapedText2), let myInt3 = Double(unwrapedText3), let myInt4 = Double(unwrapedText4) {
      var totalTime = myInt + myInt2 + myInt3 + myInt4
      self.winningLabel.text = "You won"+"\n"+"Reaction time :" + String(totalTime) + " Seconds"

      guard let highScore = UserDefaults.standard.value("highScore") as? Double else { return }

      if totalTime > highScore {
        saveScore(score: totalTime)
      }
    }
  }
}

您首先在视图中调用
timeCalculation
,我想它会计算您的“当前高分”,并将其保存到userdefaults。但是在你存钱之前,你没有检查它是否真的是高分。您需要在那里添加一个条件检查

guard let highScore = UserDefaults.standard.value(forKey: "highScore") as? Double
else{return}
if totalTime>highScore{
    saveScore(score: totalTime)
}

我应该将防护装置置于什么功能中?在时间计算或保存分数中?在
timeCalculation
中,只需将
saveScore(score:totalTime)
替换为上述代码即可。此外,您不需要
userDefaults.synchronize()
不工作,它的告诉我参数标签与任何可用重载都不匹配。我用你的建议编辑了我的问题。改进了格式