Если все значения, с которыми вы тестирование 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)
}
}
первый - это словарь, и я сделал это в первый раз, и это сообщение Xcode: необязательный тип «Bool» не может использоваться как логическое; test for '! = nil' вместо – lapacino
Обновлен мой ответ. См. Также ответ Qbyte, если ваши другие значения также являются необязательными. – Moritz
это моя переменная: var играет = Словарь() var aiDecided = false var done = false –
lapacino