59

次のコードを使用して、xcode 8 を使用してオブジェクトを UserDefaults (以前は NSUserDefaults) に保存しています。

let defaults = UserDefaults.standard()
defaults.set(someObject, forKey: "someObject")
print(defaults.object(forKey: "someObject"))

someObject は辞書であり、シミュレーターで実行しています。

何らかの理由で、これは値を保存せず、「nil」が出力されます。シミュレーターの問題かどうか疑問に思っています。

4

5 に答える 5

43

ここでこれで完璧に動作..!

    let dict:[String:String] = ["key":"Hello"]
    UserDefaults.standard.set(dict, forKey: "dict")
    let result = UserDefaults.standard.value(forKey: "dict")
    print(result!)
    // Output -> { key:hello;}
于 2016-06-15T18:30:59.917 に答える
14

これは、iOS 8/9 シミュレーターが以前に実行されている場合、iOS 10 シミュレーターで NSUserDefaults/UserDefualts が機能しないという、文書化されていないが既知の問題です。

Mac を再起動して XCode 8 に直接移行すると、iOS 10 シミュレーターでこの問題が修正されます。

参照:アプリが XCode 8 ベータ版で実行されない理由 (8S128d)

于 2016-06-15T18:40:39.180 に答える
10

この問題は、2 つのバージョンの xcode/simulator がインストールされていることが原因のようです。

私にとってうまくいったのは、xcode 7をアンインストールし、システムにxcode 8ベータを維持することでした。ゴミ箱を空にし、シミュレーターをリセットして実行します。パソコンも再起動しました。

これらの手順を実行すると、シミュレーターは UserDefaults に保存できるようになります。

于 2016-06-15T15:27:28.777 に答える