2016-07-05 2 views
0

Я пытаюсь сохранить собранные монеты и добавить эту сумму к общему количеству собранных пользователем монет (в SpriteKit). В текущем коде монеты в настоящее время не сохраняются и ничего не добавляется к общей сумме. Я не уверен, почему монеты не сохраняются, так как я не вижу каких-либо заметных ошибок в коде. Любая помощь или объяснения относительно того, почему это не работает так, как это должно быть высоко оценено.Отслеживание всех собранных монет Swift 3

var totalCoins = 0 

var coin = 0 

let totalCoinDefault = UserDefaults.standard() 

    totalCoins = totalCoinDefault.integer(forKey: "Totalcoin") 

    totalCoinLabel.text = "\(totalCoins)" 

     if (coin > 0) { 

      totalCoins += self.coin 

      totalCoinLabel.text = String(format: "Totalcoin : %i", totalCoins) 

      let totalcoinDefault = UserDefaults.standard() 

      totalcoinDefault.setValue(totalCoins, forKey: "Totalcoin") 

      totalcoinDefault.synchronize() 

     } 



func updateCoinTotal(){ 

    coinLabel.text = String(self.coin) 

    totalCoinLabel.text = String(self.totalCoins) 

    let totalCoinDefault = UserDefaults.standard() 

    totalCoins = totalCoinDefault.integer(forKey: "") 

    totalCoinLabel.text = "\(totalCoins)" 

    if (self.coin > 0) { 

     totalCoins += self.coin 

     totalCoinLabel.text = NSString(format: "%i", totalCoins) as String 

     let totalcoinDefault = UserDefaults.standard() 

     totalcoinDefault.setValue(totalCoins, forKey: "") 

     totalcoinDefault.synchronize() 

    } 
+0

Welp это раздражает. Я попытался немного изменить ваш код, и каждый раз, когда я пытаюсь понять, есть ли значение, хранящееся в NSUserfefault, я ничего не нахожу. Проверьте его с помощью игровой площадки: https://gist.github.com/anonymous/0468c16c03fdbdf6717256d0a902a13d – KFDoom

+0

Я собираюсь проверить это сейчас! @KFDoom –

ответ

1

Это обновленный код, который вы имели, которые должны работать для монет:

totalCoins = NSUserDefaults.standardUserDefaults().integerForKey("Total Coins") 

totalCoinLabel.text = "\(totalCoins)" 

if (coin > 0) { 

    totalCoins += coin 

    totalCoinLabel.text = String(format: "Total Coins: \(totalCoins)") 

    NSUserDefaults.standardUserDefaults().setInteger(totalCoins, forKey: "Total Coins") 

} 



func updateCoinTotal() { 

    coinLabel.text = String(coin) 

    totalCoinLabel.text = String(totalCoins) 

    totalCoins = NSUserDefaults.standardUserDefaults().integerForKey("Total Coins") 

    totalCoinLabel.text = "\(totalCoins)" 

    if (coin > 0) { 

     totalCoins += coin 

     totalCoinLabel.text = NSString(format: "%i", totalCoins) as String 

     NSUserDefaults.standardUserDefaults().setInteger(totalCoins, forKey: "Total Coins") 


} 

Но монеты Int будет всегда равна нулю, так totalCoins будет никогда не будет обновляться.

Это код, который я хотел бы использовать для сбора монет:

func colledCoin() { 
    totalCoins += 1 
    coin += 1 

    totalCoinLabel.text = String(totalCoins) 
    coinLabel.text = String(coin) 

    NSUserDefaults.standardUserDefaults().setInteger(totalCoins, forKey: "Total Coins") 
} 

func updateCoinLabels() { 
    totalCoins = NSUserDefaults.standardUserDefaults().integerForKey("Total Coins") 
    totalCoinLabel.text = String(totalCoins) 
} 
+0

Спасибо за ваш ответ! Нужно ли использовать команду 'totalCoinDefault.synchronize()'? –

+0

Вам не нужно использовать его. – Loanb222

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