2015-03-29 4 views
0

В основном, я используюUint8 не конвертируется в Int (сохранение игры самое лучшее время)

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. 
} 

Если вы заметили, некоторые из строки закомментированы как часть процесса отладки.

ответ

1

Пробовал это?

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

EDIT: имена переменных

+0

Я постараюсь, что теперь, благодаря –

+0

я получаю сообщение об ошибке "использование неразрешенного идентификатора" ИНТ" –

+1

I изменил ваш код, чтобы сказать «Int» вместо «int», и никаких ошибок. Сейчас я скомпилирую –

1

Это работает как шарм:

let a : UInt8 = 20 
var b : Int = 0 
b = Int(a) 
println(b) 
// Prints "20" 
Смежные вопросы