微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我想在按下检索按钮时在文本字段上显示保存的用户名和密码

如何解决我想在按下检索按钮时在文本字段上显示保存的用户名和密码

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

}

解决方法

代码似乎工作正常,我可以通过任何方式检索数据,我将在下面发布对我有用的代码。

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)
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。