我有一个textField供用户输入他们的名字。
@IBAction func nameTextField(sender: AnyObject) {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("\(nameTextField)", forKey: "userNameKey")
}
然后我回想起ViewDidLoad中输入的名字:
NSUserDefaults.standardUserDefaults().stringForKey("userNameKey")
nameLabel.text = "userNameKey"
我做错了什么?每次结果都只是“userNameKey”。我是新来的,谢谢!
答案 0 :(得分:1)
您只需将nsuserdefaults方法返回的结果分配给nameLabel.text即可。除了stringForKey返回一个可选项,所以我建议使用nil coalescing operator返回一个空字符串而不是nil,以防止在为键分配任何值之前加载它时发生崩溃。
func string(forKey defaultName: String) -> String?
返回值对于字符串值,与该字符串关联的字符串 指定的密钥。对于数字值,数字的字符串值。 如果默认值不存在或者不是字符串或数字,则返回nil 值。
特别注意事项 返回的字符串是不可变的,即使您最初设置的值是可变字符串。
你必须如下:
UserDefaults.standard.set("textToSave", forKey: "userNameKey")
nameLabel.text = UserDefaults.standard.string(forKey: "userNameKey") ?? ""
答案 1 :(得分:1)
您需要做的是:
@IBAction func nameTextField(sender: AnyObject) {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.set(yourTextField.text, forKey: "userNameKey")
}
稍后在viewDidLoad中:
let defaults = NSUserDefaults.standardUserDefaults()
let yourValue = defaults.string(forKey: "userNameKey")
nameLabel.text = yourValue