【发布时间】:2021-03-02 08:34:02
【问题描述】:
我制作了一个保存按钮,将用户名文本添加到 userdefaults 并将密码文本添加到 KeyChainSwift。我还做了一个按钮检索,它获取数据并将其添加到文本字段。但它不起作用。我打印了,它给了我所需的输出。我是否必须更改 viewdidload 函数才能在文本字段中显示?
import UIKit
import KeychainSwift
class ViewController: UIViewController {
@IBOutlet var lblUsername: UITextField!
@IBOutlet var lblPassword: UITextField!
let keychain = KeychainSwift()
let defaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func didTap() {
let username = lblUsername.text!
let password = lblPassword.text!
defaults.setValue(username, forKey: "user")
keychain.set(password, forKey: "pass")
lblUsername.text! = ""
lblPassword.text! = ""
}
@IBAction func didRetrieveData(){
let userString = UserDefaults.standard.string(forKey: "user")!
self.lblUsername.text! = userString
let userPassword = keychain.get("pass")!
self.lblPassword.text! = userPassword
}
}
【问题讨论】:
-
是否调用了 IBAction?实际上它需要指定
sender参数。并且不要将(set)value(forKey与UserDefaults一起使用,除非您知道KVC 是什么并且您确实打算使用KVC。请注意,如果您在保存用户之前retrieveData,您的代码会崩溃。