可选类型'Bool'不能用作布尔值

时间:2015-06-17 06:28:27

标签: xcode swift

var plays = Dictionary<Int,Int>()
var done = false
var aiDeciding = false

if  (!plays[sender.tag] && !aiDeciding && !done){
     self.setImageForSpot(sender.tag, player:1)  
  

这一行说可选类型'Bool'不能用作布尔值;测试   代表'!nil ='。我做了它说的话,但它更糟糕。

     checkForWin()
     aiTurn()

}

2 个答案:

答案 0 :(得分:0)

当您检查播放[sender.tag]时,这可能会返回Int或nil。它不是一个博尔。所以试试:

var plays = Dictionary<Int,Int>() 
var done = false
var aiDeciding = false

if  ((plays[sender.tag] == nil) && !aiDeciding && !done){
    self.setImageForSpot(sender.tag, player:1)
}

答案 1 :(得分:0)

这是你的工作if语句:

if (plays[sender.tag] != nil) && !aiDeciding && !done{

}

在您的代码中,您执行了!plays[sender.tag]并且没有返回bool但返回Int值,因为您声明dictionary具有Int个键和值。

所以你需要检查它是否为零,如果它不是,你可以继续。