设置播放器';iOS应用程序中的最佳时间是什么

设置播放器';iOS应用程序中的最佳时间是什么,ios,swift,Ios,Swift,我使用了用户默认值来节省玩家的最佳时间。现在,我只能通过使用下面的代码保存玩家上次玩的时间。我希望这段时间是最好的,只要它比前一段时间多(多)。谁能告诉我怎么做?谢谢你的帮助!谢谢 func setBestTime(with time:String){ let defaults = UserDefaults.standard defaults.set(time, forKey: "bestTime") } func getBestTime(

我使用了用户默认值来节省玩家的最佳时间。现在,我只能通过使用下面的代码保存玩家上次玩的时间。我希望这段时间是最好的,只要它比前一段时间多(多)。谁能告诉我怎么做?谢谢你的帮助!谢谢

func setBestTime(with time:String){
    let defaults = UserDefaults.standard
        defaults.set(time, forKey: "bestTime")
    
}

func getBestTime(){
    let defaults = UserDefaults.standard
    
    if let time = defaults.value(forKey: "bestTime") as? String {
        self.bestTimeLabel.text = "Best Time: \(time)"
    }
}

首先,你应该把最好的时间存储为双倍时间,因为在这里做你想做的事情会容易得多。然后,您所要做的就是将存储的值与新值进行比较,以确定要存储的值:

func setBestTime(with time: Double){
    let defaults = UserDefaults.standard
    let previousBestTime = defaults.double(forKey: "bestTime")
    defaults.set(time > previousBestTime ? time : previousBestTime, forKey: "bestTime")
}

func getBestTime(){
    self.bestTimeLabel.text = "Best Time: \(UserDefaults.standard.double(forKey: "bestTime"))"
}

首先,你应该把最好的时间存储为双倍时间,因为在这里做你想做的事情会容易得多。然后,您所要做的就是将存储的值与新值进行比较,以确定要存储的值:

func setBestTime(with time: Double){
    let defaults = UserDefaults.standard
    let previousBestTime = defaults.double(forKey: "bestTime")
    defaults.set(time > previousBestTime ? time : previousBestTime, forKey: "bestTime")
}

func getBestTime(){
    self.bestTimeLabel.text = "Best Time: \(UserDefaults.standard.double(forKey: "bestTime"))"
}

我宁愿将时间存储为一个数字(如Int或Double)。这使您可以比较时间(很容易),这对您的目标很有用

此外,我建议您保持get和set函数的简单,而不是让它们也做一些与UI相关的事情

因此,get和set函数可以如下所示:

func setBestTime(with time: Double) {
    let defaults = UserDefaults.standard
        defaults.set(time, forKey: "bestTime")
}

func getBestTime() -> Double? {
    let defaults = UserDefaults.standard
    
    if let time = defaults.value(forKey: "bestTime") as? Double {
        return time
    }
    return 0.0 // If there is no time stored, return some default value. 
}
// Setup
let oldBest = getBestTime()
self.bestTimeLabel.text = "Best Time: \(oldBest)"

// After the player has played a game
// I assume you get the new time from somewhere
let newTime = ...

// Set new best if applicable
if newTime > oldBest {
    // So, the player has a new best, let's save that
    setBestTime(with: newTime)
    // Make the UI display that new best time
    self.bestTimeLabel.text = "Best Time: \(newTime)"
}
正如你所看到的,他们所做的一切都不比你从他们的名字中所期望的多或少

因此,现在您只想在新时间大于已保存时间时保存它。如何做到这一点,取决于您在其余代码中调用这些函数的位置。你可以这样做:

func setBestTime(with time: Double) {
    let defaults = UserDefaults.standard
        defaults.set(time, forKey: "bestTime")
}

func getBestTime() -> Double? {
    let defaults = UserDefaults.standard
    
    if let time = defaults.value(forKey: "bestTime") as? Double {
        return time
    }
    return 0.0 // If there is no time stored, return some default value. 
}
// Setup
let oldBest = getBestTime()
self.bestTimeLabel.text = "Best Time: \(oldBest)"

// After the player has played a game
// I assume you get the new time from somewhere
let newTime = ...

// Set new best if applicable
if newTime > oldBest {
    // So, the player has a new best, let's save that
    setBestTime(with: newTime)
    // Make the UI display that new best time
    self.bestTimeLabel.text = "Best Time: \(newTime)"
}

希望这能激励你

我宁愿将时间存储为数字(如Int或Double)。这使您可以比较时间(很容易),这对您的目标很有用

此外,我建议您保持get和set函数的简单,而不是让它们也做一些与UI相关的事情

因此,get和set函数可以如下所示:

func setBestTime(with time: Double) {
    let defaults = UserDefaults.standard
        defaults.set(time, forKey: "bestTime")
}

func getBestTime() -> Double? {
    let defaults = UserDefaults.standard
    
    if let time = defaults.value(forKey: "bestTime") as? Double {
        return time
    }
    return 0.0 // If there is no time stored, return some default value. 
}
// Setup
let oldBest = getBestTime()
self.bestTimeLabel.text = "Best Time: \(oldBest)"

// After the player has played a game
// I assume you get the new time from somewhere
let newTime = ...

// Set new best if applicable
if newTime > oldBest {
    // So, the player has a new best, let's save that
    setBestTime(with: newTime)
    // Make the UI display that new best time
    self.bestTimeLabel.text = "Best Time: \(newTime)"
}
正如你所看到的,他们所做的一切都不比你从他们的名字中所期望的多或少

因此,现在您只想在新时间大于已保存时间时保存它。如何做到这一点,取决于您在其余代码中调用这些函数的位置。你可以这样做:

func setBestTime(with time: Double) {
    let defaults = UserDefaults.standard
        defaults.set(time, forKey: "bestTime")
}

func getBestTime() -> Double? {
    let defaults = UserDefaults.standard
    
    if let time = defaults.value(forKey: "bestTime") as? Double {
        return time
    }
    return 0.0 // If there is no time stored, return some default value. 
}
// Setup
let oldBest = getBestTime()
self.bestTimeLabel.text = "Best Time: \(oldBest)"

// After the player has played a game
// I assume you get the new time from somewhere
let newTime = ...

// Set new best if applicable
if newTime > oldBest {
    // So, the player has a new best, let's save that
    setBestTime(with: newTime)
    // Make the UI display that new best time
    self.bestTimeLabel.text = "Best Time: \(newTime)"
}

希望这能激励你

谢谢你的帮助!谢谢你!谢谢你的帮助!谢谢你!