XCode 6 Beta 6 if语句

时间:2014-08-26 13:59:06

标签: ios xcode swift

我根据Skip Wilson在youtube上的第五个教程制作一个tic tac toe游戏。但是,我使用的是beta 6,他使用了视频中较早的一个。虽然采取了与他相同的步骤,但我得到了这段代码的错误:

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

它说:

bool is not convertible to UInt8. 

错误指向"已完成"在第一行代码上。 done是一个变量,当它进入if时,值为false。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在Objective-C和Swift的早期版本中,您可以使用除Bool之外的其他类型,如果int为0则转换为false,如果对象为nil则为false。


使用类似的东西(语法正确):

struct Sender {// just to simulate the notation of sender.tag without using a UIView
    var tag = 1
}
var plays: [Int : Int] = [1 : 2, 3 : 4] // example values
var aiDeciding: Bool = true
var done: Bool = false
var sender: Sender = Sender()

if plays[sender.tag] == nil && aiDeciding == false && done == false {
    print("works") // will NOT be called in the situation with the example values
}

您可以使用done == false代替!done。但既然你遇到了问题,我想我应该写出来。我也喜欢这样。