Как я могу получить количество перечислений Swift?


Ответы:


173

Начиная с Swift 4.2 (Xcode 10) вы можете объявить о соответствии CaseIterableпротоколу, это работает для всех перечислений без связанных значений:

enum Stuff: CaseIterable {
    case first
    case second
    case third
    case forth
}

Количество случаев теперь просто получается с

print(Stuff.allCases.count) // 4

Для получения дополнительной информации см.


1
В последней версии swift его ошибка «Тип DAFFlow» не соответствует протоколу «RawRepresentable». Почему это заставляет меня следовать этому? Любая идея?
Сатьям

@Satyam: Что такое DAFFlow?
Мартин Р

извините, я забыл упомянуть, что "DAFFlow" - это простое перечисление, которое не наследуется ни от какого другого протокола.
Satyam

1
Это лучшее решение, но только для ясности - разработчики Apple смогут начать использовать его только после того, как Xcode 10 (и, следовательно, Swift 4.2) выйдет из бета-версии (скорее всего, около 14 сентября 2018 года).
JosephH

1
@DaniSpringer: подробности вы найдете на github.com/apple/swift-evolution/blob/master/proposals/… . Но обычно вам не нужен этот тип явно из-за автоматического вывода типа компилятора.
Мартин Р
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.