2016-07-05 53 views
5

我試圖在NSUserDefaults中保存鍵值,但未保存。這裏是我的代碼:Swift:不保存NSUserDefaults.standardUserDefaults值

func saveData() { 

    let userDefaults = NSUserDefaults.standardUserDefaults() 
    userDefaults.setObject("blablabla", forKey:"data") 
    userDefaults.synchronize() 
} 

你們誰都知道爲什麼這些數據不是保存?

我真的很感謝你的幫助。

+2

你怎麼知道它沒有保存這些值,例如「blablabla」? –

+0

當我嘗試加載值「userDefaults.dictionaryForKey(」data「)」始終爲零 – user2924482

+0

'blablabla'顯然不是一本字典。 ;) – vadian

回答

5

斯威夫特2.X:

與蘋果的來源根據:

public func objectForKey(defaultName: String) -> AnyObject? 

找回你的價值,你可以使用:

if let value = userDefaults.objectForKey("data") { 
    // do whatever you want with your value 
    // P.S. value could be numeric,string,.. 
} 
+2

Apple確實不建議在'NSUserDefaults'中使用'valueForKey'。它是'objectForKey'。 – vadian

+0

我在我的公開應用程序中沒有問題,你在哪裏閱讀它,它來自源,你能描述爲什麼嗎? –

+0

'valueForKey'是具有特殊行爲的KVC方法。除非你真的需要KVC,否則不要使用它。請在'NSUserDefaults'中發佈* source *,其中Apple使用'valueForKey'。 – vadian

4

我認爲你做錯了,試試這樣:

let userDefaults = NSUserDefaults.standardUserDefaults() 
userDefaults.setObject("blablabla", forKey:"data") 



let defaults = NSUserDefaults.standardUserDefaults() 
if let name = defaults.stringForKey("data") { 
    print(name) 
} 

您將無法訪問字符串dictionaryForKey因爲字符串不是一個字典值類型。讓我知道你是否需要任何進一步的幫助。

2

您將無法使用'dictionaryForKey'訪問字符串,因爲字符串不是字典值類型。你需要使用:

if let savedString = userDefaults.stringForKey("data") { 
    print(savedString) 
} 

如果您有任何問題都可以隨時讓我知道:)