如何从Swift中的UserDefaults中检索字符串?

时间:2015-02-26 05:39:31

标签: ios swift nsuserdefaults

我有一个textField供用户输入他们的名字。

 @IBAction func nameTextField(sender: AnyObject) {

    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject("\(nameTextField)", forKey: "userNameKey")


}

然后我回想起ViewDidLoad中输入的名字:

 NSUserDefaults.standardUserDefaults().stringForKey("userNameKey")

    nameLabel.text = "userNameKey"

我做错了什么?每次结果都只是“userNameKey”。我是新来的,谢谢!

2 个答案:

答案 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