如何解决这个If语句?

时间:2015-08-02 12:46:03

标签: ios swift cocoa-touch if-statement

我正在进行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)
    }
}

2 个答案:

答案 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)

我在此链接中找到了问题的解决方案:

  

bool error (trying a game tutorial)

@IBAction func UIButtonClicked(sender:UIButton) {
    userMessage.hidden = true
    if plays[sender.tag] == nil && !aiDeciding && !done {
        setImageForSpot(sender.tag, player:1)
    }