2016-06-10 83 views
0

我想更新一個人在我的遊戲中跳躍的總次數,但我遇到了一些問題。以下是遊戲中發生跳躍的變量以及發生加時跳躍的次數。更新變量的NSUserDefaults

var timesJumped: Int = 0 
var totalTimesJumped: Int = 0 

我有一個變量NSUserDefaults,所以它記得甚至當應用程序關閉或關閉多少次。

var timesJumpedTotal = NSUserDefaults.standardUserDefaults().integerForKey("times jumped") 

我有這個代碼塊,如果timesJumpedTotal應該始終運行,所以當我嘗試和文本設置爲這個timesJumpedTotal我得到一個空白的文本字段是真實的運行。是否有一個原因?

if timesJumpedTotal >= 0 { 
     totalTimesJumped = totalTimesJumped + timesJumped 
     NSUserDefaults.standardUserDefaults().setInteger(totalTimesJumped, forKey: "times jumped") 
    } 

在SKScene,我想顯示這個統計我有這樣的代碼來設置一個節點的文本到totalTimesJumped全文:

let timesJumped = NSUserDefaults.standardUserDefaults().integerForKey("times jumped") 
totalTimesjumped = childNodeWithName("TotalTimesJumped") as! SKLabelNode 
totalTimesjumped.text = "\(totalTimesjumped)" 

我不知道爲什麼會這樣,有沒有人有任何想法?

剛纔我也試過這個。

totalTimesJumped = totalTimesJumped + timesJumped 
timesJumpedTotal = totalTimesJumped 
NSUserDefaults.standardUserDefaults().setInteger(timesJumped, forKey: "high score") 
NSUserDefaults.standardUserDefaults().synchronize() 
+0

你可以檢查一個斷點,NSUserDefaults.standardUserDefaults()。setInteger(totalTimesJumped,forKey:「次跳」)被調用,並且它在你之前完成嘗試取值?另外,我建議你爲你的密鑰使用不同的方法,聲明一個常量讓timesJumpedKey =「com.yourgame.timesjump」,並用它作爲你的密鑰(com.yourgame ...是爲了保證它的唯一性) 。 –

回答

1

嘗試改變

if timesJumpedTotal >= 0 { 
    totalTimesJumped = totalTimesJumped + timesJumped 
    NSUserDefaults.standardUserDefaults().setInteger(totalTimesJumped, forKey: "times jumped") 
} 

要:

if timesJumpedTotal >= 0 { 
    totalTimesJumped = timesJumpedTotal + timesJumped 
    NSUserDefaults.standardUserDefaults().setInteger(totalTimesJumped, forKey: "times jumped") 
} 

看來,當你從獲取NSUserDefaults的數據你永遠不會真正使用它來增加和重寫的總。命名你的變量不那麼相似,將會幫助你查看問題。可能有一些其他地方,你必須改變它