我正在进行Tic Tac Toe游戏,并且正在关注Tnternet教程,但在我复制代码时,此错误出现在我的If语句中:
这是错误消息:
二元运营商'&&'不能应用于两个Bool操作数
@IBAction func buttonClicked(sender: UIButton) {
if !plays[sender.tag] != nil && !aiDecided != nil && !done != nil {
setImageSpot(sender.tag, player: 1)
}
}
答案 0 :(得分:0)
如果您测试的所有值都是布尔值,请删除与nil的比较。
@IBAction func buttonClicked(sender: UIButton) {
// this checks if all these Boolean values are false
if let tag = plays[sender.tag] where !tag && !aiDecided && !done {
setImageSpot(sender.tag, player: 1)
}
}
更新:你在评论中说你的字典实际上是返回整数而不是布尔值。
var plays = Dictionary<Int,Int>()
表示您在此IF语句中检查的第一个值不是Bool而是Int,因此当前代码无法正常工作。
在这种情况下,假设这是有目的的,这里有一个工作的例子,但你实际上不应该使用数字作为布尔值,而是使用Bool类型:
@IBAction func buttonClicked(sender: UIButton) {
// this checks if all Boolean values are false
// this is also assuming that 0 from "plays" means false and 1 means true
if let tag = plays[sender.tag] where tag != 0 && !aiDecided && !done {
setImageSpot(sender.tag, player: 1)
}
}
答案 1 :(得分:0)
我在此链接中找到了问题的解决方案:
@IBAction func UIButtonClicked(sender:UIButton) {
userMessage.hidden = true
if plays[sender.tag] == nil && !aiDeciding && !done {
setImageForSpot(sender.tag, player:1)
}