首页 > 解决方案 > 按下检索按钮时,我想在文本字段中显示保存的用户名和密码

问题描述

我制作了一个保存按钮,将用户名文本添加到 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
}

}

标签: swiftxcodetextfield

解决方案


The code seems to be working fine and I can retieve the data any ways I will post the code which was working for me below.

import UIKit
import KeychainSwift

class ViewController: UIViewController {

    @IBOutlet var lblUsername: UITextField!
    @IBOutlet var lblPassword: UITextField!

    let keychain = KeychainSwift()
    let defaults = UserDefaults.standard
    var isSaved = false

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func didTap(sender: UIButton) {
        
        let username = lblUsername.text!
        let password = lblPassword.text!
        
        if(username != "" && password != "") {
            defaults.setValue(username, forKey: "user")
            keychain.set(password, forKey: "pass")
            lblUsername.text! = ""
            lblPassword.text! = ""
            isSaved = true
        } else {
            self.okAlert(title: "Error", message: "Please fill all fields")
        }
        
    }

    @IBAction func didRetrieveData(sender: UIButton){
        if(isSaved == true) {
            let userString = UserDefaults.standard.string(forKey: "user")!
            self.lblUsername.text! = userString
            
            let userPassword = keychain.get("pass")!
            self.lblPassword.text! = userPassword
        } else {
            self.okAlert(title: "Error", message: "No data to be retieved")
        }
    }
    

}
extension UIViewController {
    func okAlert(title: String, message: String) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    }
}

推荐阅读