我使用以下代码使用xcode 8将对象保存到UserDefaults(以前是NSUserDefaults):
let defaults = UserDefaults.standard()
defaults.set(someObject, forKey: "someObject")
print(defaults.object(forKey: "someObject"))
someObject是一个字典,我在模拟器上运行。
由于某种原因,这不是保存值而是打印'nil'。想知道这是否是模拟器问题。
答案 0 :(得分:77)
对于Swift 3
UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
答案 1 :(得分:40)
在这里完美地工作..!
let dict:[String:String] = ["key":"Hello"]
UserDefaults.standard.set(dict, forKey: "dict")
let result = UserDefaults.standard.value(forKey: "dict")
print(result!)
// Output -> { key:hello;}
答案 2 :(得分:12)
如果先前已经运行过iOS 8/9模拟器,则NSUserDefaults / UserDefualts无法在iOS 10模拟器中运行,这是未记录但未知的问题。
重新启动Mac并直接进入XCode 8,iOS 10模拟器将解决此问题。
答案 3 :(得分:10)
此问题似乎是由安装了两个版本的xcode / simulator引起的。
对我有用的是卸载xcode 7并在我的系统上保留xcode 8 beta。清空垃圾箱,重置模拟器并运行。我也重新启动了我的电脑。
执行这些步骤后,模拟器可以保存到UserDefaults。
答案 4 :(得分:3)
快捷键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