2016-09-21 52 views
0

對象後,我面對,我無法找到谷歌或其他問題的幫助解決或給我相關NSUserDefaults零NSUserDefaults的設置鍵

let defaults = NSUserDefaults.standardUserDefaults() 
let s = defaults.objectForKey("troll") 

if s == nil { 
    defaults.setObject("This is important message", forKey: "troll") 
    defaults.synchronize() 
} 

print(s as! String) // It returns nil 

交代事實證明,如果我嘗試的一個問題在設置它後立即訪問對象,它返回零!

,但如果我的設備,然後再次運行我的項目:

s as! String // returns "This is important message"

我的問題是,爲什麼它沒有返回,而不是在第一時間返回零字符串值,但第二個項目運行時間返回該字符串值。

我需要它在第一次返回字符串值。那可能嗎?有人能指出我做錯了什麼?

在此先感謝!

回答

3

你會踢自己...

if s == nil { 

所以你剛纔說s是零,我知道了......

print(s as! String) // It returns nil 

嗯,你能指望它是的,你剛纔說這是零! :-)

我想你的意思是這樣:

let s = defaults.objectForKey("troll") 
if s == nil { 
    s = "This is important message" 
    defaults.setObject(s, forKey: "troll") 
    defaults.synchronize() 
} 
print(s as! String) // no longer returns nil 

先生,你欠我一個啤酒。

+0

我確實會踢自己....鬥爭是真正的發現錯誤!有時你只需要其他人看看你的代碼,但謝謝! :)) –

+1

嘿,我們都在我們的儲物櫃裏有這些... –

+0

我還是不明白,如果s == nil,他設定值不打印它!無 –