使用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。
- 在iOS 10(testing版1和2)中不使用“prefs”URL计划
- 即使在应用程序ID中启用了推送通知后,为什么“向您的应用程序ID添加推送通知function”警告?
- systemgroup.com.apple.configurationprofilespath的系统组容器
- Swift 3保存并从userDefaults中检索自定义对象
- iOS 10 / Xcode 8中的设备NSLog似乎截断? 为什么?
- CGRectMake,CGPointMake,CGSizeMake,CGRectZero,CGPointZero在Swift中不可用
- 什么是XCode 8中的“性格变化”?
- iOS 10不打印NSLog
- 推送通知问题与iOS 10