基本上,我正在使用
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.
}
如果您注意到,某些行会在调试过程中被注释掉。
答案 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"