2016-02-28 10 views
0

просто делает базовую игру и использует NSUserDefaults, чтобы сохранить высокий балл. при вызове мне нужно было использовать NSString с форматом «Best Time:% i». Я проиграл игру на симуляторе, и она отлично работала.Формат NSString не работает на устройстве, но работает на симуляторе

Однако, когда я пошел запускать его на устройстве, ярлык, который я отформатировал с использованием NSString (формат «Best Time:% i»), не работал, ничего не появилось на этикетке?

Вот код, который я использовал для вызова сохраненного Лучшее время:

//The previous games best time 

    var highscoreDefaults = NSUserDefaults.standardUserDefaults() 

    if (highscoreDefaults.valueForKey("Highscore") != nil){ 

    theNewTime = highscoreDefaults.valueForKey("Highscore") as! NSInteger! 

    thehighscore.text = NSString(format: "Best Time : %i" , theNewTime) as String 


    } 

// ---------------------

+0

Что делать, если 'highscoreDefaults.valueForKey («Рекорд»)' 'делает равное nil'? Кроме того, вы должны использовать 'objectForKey()', а не 'valueForKey()', чтобы проверить, есть ли запись. И, если есть, вы должны использовать 'integerForKey()' get для целочисленного значения, а не 'valueForKey()' и 'objectForKey()' cast to 'NSInteger'. –

+0

Спасибо, что я поменял их, но все равно имею ту же проблему, что и на симуляторе, но не на устройстве. Очень надоедливый. –

+0

Редактируйте свой вопрос, чтобы показать свой текущий код, в том числе и то, что вы делаете, если в настройках по умолчанию для «Рекорда» нет объектов. –

ответ

0

вы можете использовать интерполяцию строки Свифта, как вам не нужны никакие дополнительные функции из C-спецификатора формата:

thehighscore.text = "Best Time : \(theNewTime)" 
+0

попробовал это, но по какой-то причине я получаю тот же результат. –

Смежные вопросы