二进制运算符'==';无法应用于类型为';布尔';和';字符串?';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
。它没有返回实际输入的内容。