arrays - 位置的额外参数
问题描述
我有一组用户名和密码,如第 18 行和第 19 行所示。在第 36 行,有没有一种方法可以包含整个密码数组(例如用户名 (0)、(1) 和 (2))而不是一遍又一遍地复制代码?
导入 UIKit
类视图控制器:UIViewController {
@IBOutlet weak var txtUserName: UITextField!
@IBOutlet weak var txtPassword: UITextField!
@IBOutlet weak var view1: UIView!
@IBOutlet weak var view2: UIView!
let usernames = ["usernames1","usernames2","usernames3"]
let passwords = ["password1","password2","password3"]
override func viewDidLoad() {
super.viewDidLoad()
view1.layer.cornerRadius = 12.5
view2.layer.cornerRadius = 12.5
// Do any additional setup after loading the view.
if UserDefaults.standard.bool(forKey: "ISUSERLOGGEDIN") == true {
let HomeVC = self.storyboard?.instantiateViewController(withIdentifier: "HomeVC") as! HomeVC
self.navigationController?.pushViewController(HomeVC, animated: false)
}
}
@IBAction func authenticateUser(_ sender: Any) {
if txtUserName.text == usernames[0,1,2] && txtPassword.text == passwords[0,1,2] {
UserDefaults.standard.set(true, forKey: "ISUSERLOGGEDIN")
let HomeVC = self.storyboard?.instantiateViewController(withIdentifier: "HomeVC") as! HomeVC
self.navigationController?.pushViewController(HomeVC, animated: true)
let alert = UIAlertController(title: "Correct!", message: "You are now logged in", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: nil))
}
if (txtUserName.text!.count) < 6 || (txtPassword.text!.count) < 6 {
let alert = UIAlertController(title: "Whoops",
message: "Please enter all information to log in.",
preferredStyle: .alert)
alert.addAction(UIAlertAction(title:"Dismiss",
style: .cancel, handler: nil))
present(alert, animated: true)
}
}
}
解决方案
如果用户可以使用列表中的任何用户名和密码(例如第一个用户名和第三个密码)登录,您可以使用这样的用户代码
if usernames.contains(txtUserName.text ?? "") && passwords.contains(txtPassword.text ?? "") {
如果它应该是成对的(只有第一个用户名和第一个密码或第二个用户名和第二个密码),最简单的代码将是
if let userNameIndex = usernames.firstIndex(of: txtUserName.text ?? ""),
let passwordIndex = passwords.firstIndex(of: txtPassword.text ?? ""),
userNameIndex == passwordIndex {
UserDefaults.standard.set(true, forKey: "ISUSERLOGGEDIN")
...
推荐阅读
- maven - 找不到 org.bsc.maven:maven-processor-plugin:jar:1.3.1 在
- ms-access - 当我尝试使用 Access VBA 中的记录集来填充表中的文本字段时,它会从数据中删除所有换行符
- networkx - ValueError:指定的交互扩展比给定节点已经存在的扩展更广泛
- android - 无法在片段的 onDestroyView() 上隐藏键盘
- python - 该对象在创建 CountVectorizer 对象的上下文中意味着什么?
- pandas - 在 pandas barplot 的每个子组中的条之间添加空格
- python - 按列格式化和修改熊猫数据框
- sql - 连接来自同一个表的两个组字段
- node.js - 解析模板时出错:意外的结束标记 app-post-list
- google-chrome - 当我尝试单击并打开网页中的 xml 链接时,出现错误消息不安全尝试加载 URL