二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 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】:因为您在标题中分享的错误。看起来usernameStored
是Bool
,可能表示执行的命令是否成功。您无法将其与用户名的 String
值进行比较。
您实际上是在问true
是否等于"johnsmith"
。
检查executeUpdate()
方法返回的内容。阅读它的文档。
【讨论】:
我明白了。我认为这个 shareInstance 路径是我的 SQLite 数据库的路径,用户名和密码可以在其中检索登录凭据。这似乎不是使用的路径吗? @alexander 我明白了。我认为这个 shareInstance 路径是我的 SQLite 数据库的路径,用户名和密码可以在其中检索登录凭据。这似乎不是使用的路径吗? @Jariusb24 在不了解提供数据库功能的框架的情况下,我无法提供进一步的帮助。我不知道它是如何运作的,也不知道您要查找的数据可能在哪里。 没问题。我找到了正确的数据路径。就像您之前提出的那样,usernameStored 不断转换回布尔值。你知道这是为什么吗?我已经解决这个问题几天了,所以任何信息都会非常有帮助! @Jariusb24 原因是方法 (.executeUpdate()) 正在对数据库执行操作。因此,您执行操作,在将数据插入数据库的情况下,它返回Bool
,说明操作是否成功。这就是为什么它是Bool
。它没有返回它实际输入的内容。以上是关于二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]的主要内容,如果未能解决你的问题,请参考以下文章
二元运算符'+'不能应用于'String'和'() -> String'类型的操作数
二元运算符 % 不能应用于 UInt32 和 int 类型的操作数
二元运算符“===”不能应用于“任何?”类型的操作数和“UIBarButtonItem!”