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

How to retrieve string from UserDefaults in Swift?

我有一个文本字段供用户输入他们的名字。

 @IBAction func nameTextField(sender: AnyObject) {

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


}

然后我回忆起在 ViewDidLoad 中输入的名称:

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

    nameLabel.text = "userNameKey"

我做错了什么?结果每次都是"userNameKey"。我是新手,谢谢!

您只需将 return 由 nsuserdefaults method to your nameLabel.text. Besides that stringForKey returns an optional so I recommend using the nil coalescing operator 编辑的结果分配给 return 一个空字符串而不是 nil 以防止在分配任何值之前尝试加载它时发生崩溃到关键。

func string(forKey defaultName: String) -> String?

Return Value For string values, the string associated with the specified key. For number values, the string value of the number. Returns nil if the default does not exist or is not a string or number value.

特殊注意事项 returned 字符串是不可变的,即使您最初设置的值是可变字符串也是如此。

您必须如下:

UserDefaults.standard.set("textToSave", forKey: "userNameKey")

nameLabel.text = UserDefaults.standard.string(forKey: "userNameKey")  ?? ""

您需要做的是:

@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