二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]

Posted

技术标签:

【中文标题】二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]【英文标题】:Binary operator '==' cannot be applied to operands of type 'Bool' and 'String?' for Swift in 2020 [duplicate] 【发布时间】:2020-08-13 17:57:24 【问题描述】:

我似乎无法弄清楚为什么等于运算符不起作用。

这是我的代码:

@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.
        
    

【问题讨论】:

【参考方案1】:

因为您在标题中分享的错误。看起来usernameStoredBool,可能表示执行的命令是否成功。您无法将其与用户名的 String 值进行比较。

您实际上是在问true 是否等于"johnsmith"

检查executeUpdate() 方法返回的内容。阅读它的文档。

【讨论】:

我明白了。我认为这个 shareInstance 路径是我的 SQLite 数据库的路径,用户名和密码可以在其中检索登录凭据。这似乎不是使用的路径吗? @alexander 我明白了。我认为这个 shareInstance 路径是我的 SQLite 数据库的路径,用户名和密码可以在其中检索登录凭据。这似乎不是使用的路径吗? @Jariusb24 在不了解提供数据库功能的框架的情况下,我无法提供进一步的帮助。我不知道它是如何运作的,也不知道您要查找的数据可能在哪里。 没问题。我找到了正确的数据路径。就像您之前提出的那样,usernameStored 不断转换回布尔值。你知道这是为什么吗?我已经解决这个问题几天了,所以任何信息都会非常有帮助! @Jariusb24 原因是方法 (.executeUpdate()) 正在对数据库执行操作。因此,您执行操作,在将数据插入数据库的情况下,它返回Bool,说明操作是否成功。这就是为什么它是Bool。它没有返回它实际输入的内容。

以上是关于二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]的主要内容,如果未能解决你的问题,请参考以下文章

二元运算符“+”不能应用于“_”和“字符串”类型的操作数

二元运算符'+'不能应用于'String'和'() -> String'类型的操作数

二元运算符 % 不能应用于 UInt32 和 int 类型的操作数

二元运算符“===”不能应用于“任何?”类型的操作数和“UIBarButtonItem!”

Swift 3:二元运算符不能应用于 int 和“Int”类型的操作数?

二元运算符 += 不能应用于类型的操作数 [关闭]