使用xcode 8在swift 3中的userdefaults中保存字典

ali*_*ego 56 nsuserdefaults swift3 ios10 xcode8

我使用以下代码使用xcode 8将对象保存到UserDefaults(以前的NSUserDefaults):

let defaults = UserDefaults.standard()
defaults.set(someObject, forKey: "someObject")
print(defaults.object(forKey: "someObject"))
Run Code Online (Sandbox Code Playgroud)

someObject是一个字典,我在模拟器上运行.

由于某种原因,这不是保存值,而是打印'nil'.想知道这是否是模拟器问题.

Jan*_*Jan 80

对于Swift 3

UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
Run Code Online (Sandbox Code Playgroud)


Bis*_*ung 42

在这里完美地工作..!

    let dict:[String:String] = ["key":"Hello"]
    UserDefaults.standard.set(dict, forKey: "dict")
    let result = UserDefaults.standard.value(forKey: "dict")
    print(result!)
    // Output -> { key:hello;}
Run Code Online (Sandbox Code Playgroud)


Ric*_*ard 13

这是未记录但已知的问题,如果之前运行过iOS 8/9模拟器,NSUserDefaults/UserDefualts在iOS 10模拟器中不起作用.

重新启动Mac并直接进入XCode 8,iOS 10模拟器将解决此问题.

另请参阅:为什么我的应用程序不能在XCode 8 beta(8S128d)中运行


ali*_*ego 10

此问题似乎是由安装了两个版本的xcode/simulator引起的.

对我有用的是卸载xcode 7并在我的系统上保留xcode 8 beta.清空垃圾箱,重置模拟器并运行.我也重新启动了我的电脑.

执行这些步骤后,模拟器可以保存到UserDefaults.


San*_*rma 5

斯威夫特4:-

let defaults = UserDefaults.standard

let dictionary: [String:String] = ["key":"Value"]  //Dictionary which you want to save

defaults.setValue(dictionary, forKey: "DictValue") //Saved the Dictionary in user default

let dictValue = defaults.value(forKey: "DictValue") //Retrieving the value from user default 

print(dictValue)  // Printing the value 
Run Code Online (Sandbox Code Playgroud)

  • 保存Int:String字典会导致应用程序崩溃。仅字符串:字符串有效 (2认同)