2014-12-29 34 views
1

相同的代碼昨天正常工作,不知道爲什麼今天不工作。我試圖保存用戶完成的級別數量,然後解鎖。我的繼承人代碼NSuserDefaults不能保存,直到我關閉應用程序swift

var defaults = NSUserDefaults() 
var levelsCompleted = defaults.intergerForKey("levelsCompleted") 

保存在用戶完成水平

if levelfinished() { 
defaults.setInteger(nextlevel, forKey: "levelsCompleted") 
defaults.synchronize() 
println("level \(levelsCompleted) unlocked) 
} 

無論我完成什麼樣的水平,它總是打印用戶上次會話保存級別 所以,如果我第一次運行時,顯示的值返回總是1,即使等級第10條完成,但當我關閉應用程序並重新運行時,然後11級被解鎖並返回即使我完成了第20級。所以我不知道爲什麼它沒有正確保存。昨天我工作的很好,只要我完成了它用來打印正確nextlevel值的任何級別。 繼承人的截圖http://i.imgur.com/It8LOpX.png它總是說解鎖6

+0

同步()返回一個布爾說,如果它是成功的,所以你可能要檢查。 – manecosta

+0

沒有返回任何東西,繼承人截圖http://i.imgur.com/It8LOpX.png它總是說**解鎖6 ** – user528432

+0

當然它返回的東西,無論是真的還是假的。返回並不意味着打印到控制檯,你必須像「let didWork = defaults.synchronize()」,然後檢查「didWork」的值 – manecosta

回答

1

很難發佈代碼作爲評論,所以讓我們試着在這裏工作。

試着改變你的if語句這樣:

if levelfinished() { 
    defaults.setInteger(nextlevel, forKey: "levelsCompleted") 
    defaults.synchronize() 
    levelsCompleted = defaults.intergerForKey("levelsCompleted") 
    println("level \(levelsCompleted) unlocked) 
} 
+0

是(y)完美運作! – user528432

0

獲取完整的層次是這樣的:

var levelsCompleted = NSUserDefaults.standardUserDefaults().intergerForKey("levelsCompleted") 

保存用戶完整的級別是這樣的:

if levelfinished() 
{ 
    NSUserDefaults.standardUserDefaults().setInteger(nextlevel, forKey: "levelsCompleted") 
    NSUserDefaults.standardUserDefaults().synchronize() 
} 

讓我知道,如果你有任何問題。

+0

仍然無法正常工作,我不知道它是什麼問題。 – user528432

相關問題