Uint8不能转换为Int(保存游戏的最佳时间)

时间:2015-03-29 12:56:02

标签: ios swift

基本上,我正在使用

var highscoreDefault = NSUserDefaults.standardUserDefaults()

保存高分,在这种情况下是一个时间。我遇到的问题是秒表计时器正在使用Uint8,我得到错误“Uint8不能转换为Int”

这让我有点疯狂,试图解决这个问题,我总结说最简单的方法是将Uint8值转换为Int,这样最快的时间就可以作为高分保存在游戏中。

任何帮助都将不胜感激,谢谢。

'startSeconds'和'startFraction'变量在Uint8 ..但'hseconds'和'hfrac'变量需要为Int才能保存。

错误发生在以下几行:

hseconds = startSeconds
hfrac = startFraction

这里有相关功能:

func stop() {


    hseconds = startSeconds
    hfrac = startFraction

    if (hseconds < highscoreSec) {


        // && (fraction < highscoreFrac)

        //highscoreSec = startSeconds
        //highscoreFrac = startFraction


        highscoreDefault.setValue(highscoreSec, forKey: "seconds")
        highscoreDefault.setValue(highscoreFrac, forKey: "frac")
    }

    highscoreDefault.synchronize()

    timer.invalidate()
    timer == 0
}

这里有更多代码:

override func viewDidLoad() {
    super.viewDidLoad()

    var highscoreDefault = NSUserDefaults.standardUserDefaults()
    playButton.hidden = true

    if (highscoreDefault.objectForKey("seconds") != nil) { highscoreSec = highscoreDefault.valueForKey("seconds")as NSInteger!
    }

    if (highscoreDefault.objectForKey("frac") != nil) { highscoreFrac = highscoreDefault.valueForKey("frac")as NSInteger!
    }

    highscoreLabel.text = "(highscoreSec):\(highscoreFrac)"

    // Do any additional setup after loading the view.
}

如果您注意到,某些行会在调试过程中被注释掉。

2 个答案:

答案 0 :(得分:1)

试过这个?

let hseconds = Int(startSeconds) 
let hfrac = Int(startFraction)

编辑:变量名称

答案 1 :(得分:1)

这就像一个魅力:

let a : UInt8 = 20
var b : Int = 0
b = Int(a)
println(b)
// Prints "20"