Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift错误:找不到'&&';它接受提供的参数_Swift_Xcode6 Beta6 - Fatal编程技术网

Swift错误:找不到'&&';它接受提供的参数

Swift错误:找不到'&&';它接受提供的参数,swift,xcode6-beta6,Swift,Xcode6 Beta6,我一直在为斯威夫特编写一些教程。我遇到了一个TictaToe教程,我正试图使用Xcode 6 Beta 6编写该教程。在检查字典中的值时,出现以下错误:找不到接受所提供参数的“&&”的重载。这是我的密码 var plays = [Int:Int]() var whoWon = ["I":0,"you":1] for (key,value) in whoWon { if ((plays[6] == value && plays[7] == value && pla

我一直在为斯威夫特编写一些教程。我遇到了一个TictaToe教程,我正试图使用Xcode 6 Beta 6编写该教程。在检查字典中的值时,出现以下错误:找不到接受所提供参数的“&&”的重载。这是我的密码

var plays = [Int:Int]()

var whoWon = ["I":0,"you":1]
for (key,value) in whoWon {
if ((plays[6] == value && plays[7] == value && plays[8] == value) || 
    (plays[3] == value && plays[4] == value && plays[5] == value) || 
    (plays[0] == value && plays[1] == value && plays[2] == value) || 
    (plays[6] == value && plays[3] == value && plays[0] == value) || 
    (plays[7] == value && plays[4] == value && plays[1] == value) || 
    (plays[8] == value && plays[5] == value && plays[2] == value) || 
    (plays[6] == value && plays[4] == value && plays[2] == value) ||  // error appears on this line
    (plays[8] == value && plays[4] == value && plays[0] == value))  
 {
    userMessage.hidden = false
    userMessage.text = "Looks like \(key) won!"
 }

如果您在报表导航器中查看完整的编译器输出,那么您将看到 信息

注:表达式过于复杂,无法在合理时间内解决; 把表达式分解成不同的子表达式


它告诉你如何解决这个问题。

我也在做同样的教程。 在我看来,有点奇怪,它必须被分解成子表达式,但它做到了,正如我在这里读到的:

这可能是由于Xcode的问题

下面是重写的函数:

func checkForWin() {
    var whoWon = ["I": 0, "You": 1]
    for (key, value) in whoWon {
        var wonA = (plays[1] == value && plays[2] == value && plays[3] == value)
        var wonB = (plays[4] == value && plays[5] == value && plays[6] == value)
        var wonC = (plays[7] == value && plays[8] == value && plays[9] == value)
        var wonD = (plays[1] == value && plays[4] == value && plays[7] == value)
        var wonE = (plays[2] == value && plays[5] == value && plays[8] == value)
        var wonF = (plays[3] == value && plays[6] == value && plays[9] == value)
        var wonG = (plays[1] == value && plays[5] == value && plays[9] == value)
        var wonH = (plays[3] == value && plays[5] == value && plays[7] == value)

        if(wonA || wonB || wonC || wonD || wonE || wonF || wonG || wonH) {
                userMessage.hidden = false
                userMessage.text = "Looks like \(key) won!"
                resetBtn.hidden = false
                done = true
        }
    }
}
使用括号“将表达式分解为不同的子表达式”。 这在Xcode 6.4中起作用

 if (((plays[1] == value) && (plays[2] == value) && (plays[3] == value)) ||
     ((plays[4] == value) && (plays[5] == value) && (plays[6] == value)) ||
     ((plays[7] == value) && (plays[8] == value) && (plays[9] == value)) ||
     ((plays[1] == value) && (plays[4] == value) && (plays[7] == value)) ||
     ((plays[2] == value) && (plays[5] == value) && (plays[8] == value)) ||
     ((plays[3] == value) && (plays[6] == value) && (plays[9] == value)) ||
     ((plays[1] == value) && (plays[5] == value) && (plays[9] == value)) ||
     ((plays[3] == value) && (plays[5] == value) && (plays[7] == value))) {...}

谢谢我忘记了“问题导航器”选项卡。嘿@Martin R我正在使用同一个教程,我是一个初学者,你如何将它分解为子表达式?如何将某些内容分解为子表达式?为什么
var
而不是
let
?(即,won*可以是常量,对吗?…)