2016-04-14 2 views
0

У меня есть игра с spritekit, в которой у меня есть рекорды. Он использует NSUser Default. Но я получаю рекордер 2, а затем полностью закрываю приложение, а затем открываю его, он показывает мой рекордер 2, а затем получает его как счет. Он остается равным 2. Однако я снова закрываю приложение и открываю его, он показывает рекордер 1. Почему он это делает? Это мой код. Не работает ли условие if? Примечание. Это просто сужается до кода Highscore.Сумма моего рекорда продолжает расти вверх и вниз. Swift SpriteKit

import SpriteKit 

//In the DidMoveToView function 
if let Highscore1 = defaults.stringForKey("Highscore"){ 
    HighScoreLabel.text = "HIGHSCORE: \(Highscore1)" 
} 
//In the touches began func 
//Making what happens when the User Fails and a new highscore is achieved 

if Score > highscore { 

    defaults.setObject("\(Score)", forKey: "Highscore") 

} 

Спасибо заранее

+0

Не помню, нужно ли это делать в iOS8, но на всякий случай синхронизируется, когда вы звоните где угодно? Возможно, добавьте его сразу после setObject, чтобы узнать, что произойдет. –

ответ

1

Вопрос является вы читаете из NSUserDefaults топ-лист и показывать его в HighScoreLabel. Но вы не присвоены/сохраненное значения в highscore переменном, из-за того, что она остается в 0. Это делает следующее условие верно, когда вы открываете приложение и играет впервые:

if Score > highscore { 
    defaults.setObject("\(Score)", forKey: "Highscore") 
} 

Вы должны измените показатель чтения с высокой оценкой, как:

if let Highscore1 = defaults.stringForKey("Highscore") { 
    HighScoreLabel.text = "HIGHSCORE: \(Highscore1)" 

    // Storing current high score to variable 
    highscore   = Int(Highscore1) 
} 
Смежные вопросы