swift - 按下检索按钮时,我想在文本字段中显示保存的用户名和密码
问题描述
我制作了一个保存按钮,将用户名文本添加到 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
}
}
解决方案
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)
}
}
推荐阅读
- python - create nested json file managing null values
- python - Code of a generator that does not work properly in Python
- java - 是否有代表两个瞬间之间范围的 java 类?
- python - 通过 MCP3002 ADC 使用 RPi 读取麦克风输入值
- db2 - How to resolve slow downs induced by HADR_FLAGS = STANDBY_RECV_BLOCKED?
- c++ - mpirun 注意到节点 X540UV 上具有 PID 0 的进程等级 1 在信号 11 上退出(分段错误)
- java - SecurityException 未从服务转发到其管理器
- java - 具有从外部无状态和线程安全传递对象参数的方法的类吗?
- lumen - 在流明封装内定义路径
- reactjs - How to switch between child routes?