Swift错误:Int不能转换为'DictionaryIndex <int,int>'</int,int>

时间:2014-08-06 20:19:36

标签: swift

当我从Xcode 6 beta 4切换到beta 5时,我在引用我的plays变量时遇到此错误(Int不能转换为&#39; DictionaryIndex&#39;)。我不知道如何解决这个问题。

以下是代码块:

    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

    }

2 个答案:

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