2016-07-05 11 views
5

値。ここに私のコードです:スウィフト:保存しないですNSUserDefaults.standardUserDefaultsは、私がNSUserDefaultsにキー値を保存しようとしているが、保存されていません

func saveData() { 

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

このデータが保存されていない理由は何ですか?

私は本当にあなたの助けに感謝します。

+2

はどのようにあなたはそれがその「blablabla」たとえばこれらの値を保存していません知っているのですか? –

+0

私は値をロードしようとすると、「userDefaults.dictionaryForKey(」データ「)」 – user2924482

+0

'blablabla'が明らかに辞書ではありません常にnilです。 ;) – 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

アップルは、 'NSUserDefaults'で' valueForKey'を使うことは絶対に勧めません。これは 'objectForKey'です。 – vadian

+0

私は問題なく公開アプリを使っていますが、どこから読んだのですか、ソースから来たのですか?理由を説明できますか? –

+0

'valueForKey'は特別な振る舞いを持つKVCメソッドです。本当にKVCが必要な場合以外は、使用しないでください。 Appleが 'NSUserDefaults'に' valueForKey'を使用する* source *を投稿してください。 – 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) 
} 

ご不明な点は、私に知らせて自由に感じる持っている場合:)

関連する問題