2016-08-04 66 views
1

有一些逻辑,但它不像我想要的那样工作。一切都很好,直到coinNumber成为0,然后重新启动到100(var coins = 100)将分数添加到NSUserDefault

目标是以100开头。然后当你玩它时,它有 - 或+硬币,并保存到另一个变量。

public var coins = 100 // at start got 100 coins 


var coinNumber = NSUserDefaults.standardUserDefaults().integerForKey("coins") 

func addCoins400() { // adding 400 coins and save it 
     coins = coins + 400 

     let CoinsDefault = NSUserDefaults.standardUserDefaults() 
     CoinsDefault.setInteger(coins, forKey: "coins") 

    } 

if coinNumber != 0 { 
      coins = coinNumber 
     } 

@IBAction func showAnswer(sender: UIButton) { 

     if coins >= 50 { 
      // I show answer 
      coins = coins - 50 


      let CoinsDefault = NSUserDefaults.standardUserDefaults() 
      CoinsDefault.setInteger(coins, forKey: "coins") 
      CoinsDefault.synchronize() 
+1

NSUserDefaults.standardUserDefaults()。同步() – Asdrubal

+0

@Asdrubal大概不会。 http://stackoverflow.com/a/9647965/2227743 – Moritz

+0

@EricAya“因为此方法是定期自动调用的,所以只有当您不能等待自动同步时才使用此方法(例如,如果您的应用程序即将退出),或者即使您没有进行任何更改,也要将用户默认更新为磁盘上的内容。“ [Apple iOS Documentation](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/index.html#//apple_ref/occ/instm/NSUserDefaults/synchronize)。我不知道OP在使用它的情况,这就是为什么我评论&没有回答的原因 – Asdrubal

回答

1

尝试synchronizingNSUserDefaults

public var coins = 100 // at start got 100 coins 



var coinNumber = NSUserDefaults.standardUserDefaults().integerForKey("coins") 

func addCoins400() { // adding 400 coins and save it 
     coins = coins + 400 

     let CoinsDefault = NSUserDefaults.standardUserDefaults() 
     CoinsDefault.setInteger(coins, forKey: "coins") 
     CoinsDefault.synchronize() 
    } 

if coinNumber != 0 { 
      coins = coinNumber 
     } 
+0

问题是当coinNumber == 0它返回到100.直到它不是0一切都好 – Done

+0

你在哪里递减硬币? – AtWork