我根据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。我做错了什么?
答案 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
。但既然你遇到了问题,我想我应该写出来。我也喜欢这样。