问题描述
我有一个 textField 供用户输入他们的名字.
@IBAction func nameTextField(sender: AnyObject) {让默认值 = NSUserDefaults.standardUserDefaults()defaults.setObject("\(nameTextField)", forKey: "userNameKey")}
然后我回忆了在 ViewDidLoad 中输入的名称:
NSUserDefaults.standardUserDefaults().stringForKey("userNameKey")nameLabel.text = "userNameKey"
我做错了什么?结果每次都只是userNameKey".我是新手,谢谢!
你只需要赋值 nsuserdefaults 方法到您的 nameLabel.text.除此之外stringForKey 返回一个可选项,所以我建议使用 nil 合并运算符 返回一个空字符串而不是 nil 以防止在为键分配任何值之前尝试加载它时发生崩溃.
func string(forKey defaultName: String) ->细绳?
返回值对于字符串值,与指定的键.对于数字值,数字的字符串值.如果默认值不存在或者不是字符串或数字,则返回 nil价值.
特殊注意事项返回的字符串是不可变的,即使您最初设置的值是可变字符串.
您必须按照以下步骤操作:
UserDefaults.standard.set("textToSave", forKey: "userNameKey")nameLabel.text = UserDefaults.standard.string(forKey: "userNameKey") ??"
I have a textField for the user to input their name.
@IBAction func nameTextField(sender: AnyObject) {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("\(nameTextField)", forKey: "userNameKey")
}
Then I recall the inputted name in ViewDidLoad with:
NSUserDefaults.standardUserDefaults().stringForKey("userNameKey")
nameLabel.text = "userNameKey"
What am I doing wrong? Result is simply "userNameKey" every time. I'm new to this, thanks!
You just have to assign the result returned by nsuserdefaults method to your nameLabel.text. Besides that stringForKey returns an optional so I recommend using the nil coalescing operator to return an empty string instead of nil to prevent a crash if you try to load it before assigning any value to the key.
func string(forKey defaultName: String) -> String?
Special ConsiderationsThe returned string is immutable, even if the value you originally set was a mutable string.
You have to as follow:
UserDefaults.standard.set("textToSave", forKey: "userNameKey")
nameLabel.text = UserDefaults.standard.string(forKey: "userNameKey") ?? ""
这篇关于如何从 Swift 中的 UserDefaults 检索字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!