2015-08-02 2 views
-1

Я работаю на Toe игры Tic Tac и я следую в учебник Tnternet, но пока я воспроизводя код этой ошибки появляются в моем заявлении If:Как исправить это утверждение If?

Это сообщение об ошибке:

Бинарный оператор «& &» не может быть применен к двум Bool операндами

@IBAction func buttonClicked(sender: UIButton) { 

    if !plays[sender.tag] != nil && !aiDecided != nil && !done != nil { 

     setImageSpot(sender.tag, player: 1) 
    } 
} 

ответ

0

Если все значения, с которыми вы тестирование Booleans, удалите сравнение с nil.

@IBAction func buttonClicked(sender: UIButton) { 

    // this checks if all these Boolean values are false 
    if let tag = plays[sender.tag] where !tag && !aiDecided && !done { 

     setImageSpot(sender.tag, player: 1) 

    } 

} 

ОБНОВЛЕНИЕ: вы сказали в комментариях, что ваш словарь фактически возвращает целые числа вместо булевых значений.

var plays = Dictionary<Int,Int>() означает, что первое значение, которое вы проверяете в этом операторе IF, не является Bool, а Int, поэтому текущий код не может работать действительно.

В этом случае и при условии, что это нарочно, вот пример, который работает , но вы не должны фактически использовать число в качестве значений логических значений, используйте типы BOOL вместо:

@IBAction func buttonClicked(sender: UIButton) { 

    // this checks if all Boolean values are false 
    // this is also assuming that 0 from "plays" means false and 1 means true 
    if let tag = plays[sender.tag] where tag != 0 && !aiDecided && !done { 

     setImageSpot(sender.tag, player: 1) 

    } 

} 
+0

первый - это словарь, и я сделал это в первый раз, и это сообщение Xcode: необязательный тип «Bool» не может использоваться как логическое; test for '! = nil' вместо – lapacino

+0

Обновлен мой ответ. См. Также ответ Qbyte, если ваши другие значения также являются необязательными. – Moritz

+0

это моя переменная: var играет = Словарь () var aiDecided = false var done = false – lapacino

0

я нашел решение вопроса в этой ссылке:

bool error (trying a game tutorial)

@IBAction func UIButtonClicked(sender:UIButton) { 
    userMessage.hidden = true 
    if plays[sender.tag] == nil && !aiDeciding && !done { 
     setImageForSpot(sender.tag, player:1) 
    }