当我从Xcode 6 beta 4切换到beta 5时,我在引用我的plays
变量时遇到此错误(Int不能转换为' DictionaryIndex')。我不知道如何解决这个问题。
以下是代码块:
var plays = Dictionary<Int,Int>()
var done = false
var aiDeciding = false
//Function that says what to do if a UIButton is clicked:
@IBAction func UIbuttonClicked(sender:UIButton) {
if !plays[sender.tag] && !aiDeciding && !done {
setImgforCircle(sender.tag, player:1)
thinkingLabel.hidden = true
thinkingLabel2.hidden = true
thinkingLabel3.hidden = true
}
答案 0 :(得分:1)
我认为这只是一个欺骗性错误消息,实际错误在
if !plays[sender.tag]
相反,它应该是
if plays[sender.tag] != nil
答案 1 :(得分:1)
这是由于语言的变化,特别是这个
Optionals在有值时不再隐式评估为true 如果他们不这样做,则为假,以避免在工作时产生混淆 可选的Bool值。相反,对nil做一个明确的检查 ==或!=运算符,以确定可选项是否包含值。
plays[sender.tag]
返回Option<Int>
,您假设nil
值将评估为false,因此!plays[sender.tag]
。
从测试版5开始,这是禁止的,您必须明确检查nil
plays[sender.tag] != nil