二进制运算符'==';无法应用于类型为';布尔';和';字符串?';2020年的Swift
我似乎不明白等号运算符为什么不起作用 这是我的密码:二进制运算符'==';无法应用于类型为';布尔';和';字符串?';2020年的Swift,swift,string,boolean,Swift,String,Boolean,我似乎不明白等号运算符为什么不起作用 这是我的密码: @IBAction func LoginButton(_ sender: UIButton) { let Username = UsernameTextField.text; let Password = PasswordTextField.text; //Pull stored data from server let usernameStored = shareInstance.datab
@IBAction func LoginButton(_ sender: UIButton) {
let Username = UsernameTextField.text;
let Password = PasswordTextField.text;
//Pull stored data from server
let usernameStored = shareInstance.database?.executeUpdate("INSERT INTO Signups( Username, Password) VALUES(?,?)", withArgumentsIn: [Username,Password])
shareInstance.database?.close()
let passwordStored = shareInstance.database?.executeUpdate("INSERT INTO Signups( Username, Password) VALUES(?,?)", withArgumentsIn: [Username,Password])
shareInstance.database?.close()
if(usernameStored! == Username)
{
if(passwordStored! == Password)
{
//Login is successful.
}
}
}
因为您在标题中共享的错误。看起来
usernameStored
是一个Bool
,可能表示执行的命令是否成功。您无法将其与用户名的字符串
值进行比较
你本质上是在问true
是否等于“johnsmith”
检查
executeUpdate()
方法返回的内容。阅读它的文档。我明白了。我认为这个shareInstance路径是指向我的SQLite数据库的路径,在那里用户名和密码可以检索登录凭据。“这不是我们要走的路吗?”亚历山大,我明白了。我认为这个shareInstance路径是指向我的SQLite数据库的路径,在那里用户名和密码可以检索登录凭据。这似乎不是要使用的路径吗?@Jariusb24如果不知道提供数据库功能的框架,我无法进一步提供帮助。我不知道它是如何运行的,也不知道您要查找的数据可能在哪里。没问题。我找到了数据的正确路径。就像你之前提到的,usernameStored不断转换回bool。你知道这是为什么吗?我已经解决这个问题几天了,所以任何信息都会非常有用@Jariusb24原因是方法(.executeUpdate())正在对数据库执行操作。因此,在将数据插入数据库的情况下,执行该操作,它将返回一个Bool
,说明该操作是否成功。这就是为什么它是一个Bool
。它没有返回实际输入的内容。