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

我正在使用下面的代码保存一个对象到UserDefaults(以前的NSUserDefaults)使用xcode 8:

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

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

出于某种原因,这不是保存的价值和“零”打印。 想知道如果这是一个模拟器的问题。

对于Swift 3

 UserDefaults.standard.setValue(token, forKey: "user_auth_token") print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)") 

在这里完美的工作..!

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

这是NSUserDefaults / UserDefualts无法在iOS 10模拟器中工作的未公开的但已知的问题,如果iOS 8/9模拟器以前已经运行过。

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

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

这个问题似乎是由于安装了两个版本的xcode / simulator而导致的。

什么对我来说是卸载xcode 7,只是保持在我的系统上的xcode 8testing版。 清空垃圾,重置模拟器并运行。 我也重新启动了我的电脑。

遵循这些步骤之后,模拟器可以保存到UserDefaults。