Как Unheilig написал enumarate возвращается в sequenceType.
Вы также можете удалить Перечислим вызов, на мой взгляд, сделать код в вашем случае более читаемым, как это:
var numTrue = 0
var numFalse = 0
var boolArray = [true, true, false, true]
for index in boolArray {
if index == false{
numFalse++
} else {
numTrue++
}
}
print("Count true: \(numTrue)")
print("Count false: \(numFalse)")
Edit 1: Quick-Help Doc
Для следующего Если у вас возникла аналогичная проблема или возникла ошибка, вы также можете использовать документацию Quick-Help, удерживая alt и зависая над методом, чем появляется вопросительный знак, и вы можете нажать на этот метод. Откроется окно с описанием метода, а иногда и примером, как в случае с перечислением(). Смотрите скриншот ниже:
Edit 2: Улучшенное решение
Swift предоставляет методы по коллекциям в вашем случае массив, чтобы уменьшить объем кода. В вашем случае вы можете использовать метод filter(), который возвращает новый массив, отфильтровывая элементы из массива, на который он вызван. Единственным аргументом является закрытие (подробнее о замыканиях here), который возвращает логическое значение, и он будет выполнять это закрытие один раз для каждого элемента массива. Swift автоматически предоставляет имена сокращенных аргументов для встроенных закрытий, которые могут использоваться для ссылки на значения аргументов закрытия по именам $0, $1, $2
и т. Д. (Из документации).
Так что в вашем случае $0
стоит для каждого элемента, начиная с индексом 0.
count
возвращает количество элементов в массиве вас, так что в вашем случае с помощью filter
это только возвращает значение 3, правда появляется в 3 раза.trueCounter = 3
Для falseCounter
вы можете легко вычесть результат trueCounter из boolArray.count
, который falseCounter = 4 - 3 -> 1
var boolArray = [true, true, false, true]
let trueCounter = boolArray.filter({$0 == true}).count
let falseCounter = boolArray.count - trueCounter
print("Count true: \(trueCounter)") // Count true: 3
print("Count false: \(falseCounter)") // Count false: 1
Какие ошибки вы получаете? – dasdom
XCode сообщает мне, что есть проблема с двоичным оператором «==». Так что это не похоже на мой оператор «if index == false» – rowenarrow