Enum: Считайте и перечислите все случаи (снаружи!)IOS

Программируем под IOS
Ответить
Anonymous
 Enum: Считайте и перечислите все случаи (снаружи!)

Сообщение Anonymous »

У меня есть этот перевод (Xcode 10 /swift 5) в своем собственном файле ("myenum.swift"): < /p>

Код: Выделить всё

enum MyEnum: Int, CaseIterable {
case A = 0
case B = 1
case C = 2
case D = 3
case E = 4
//Each case needs its own number and description!

var description: String {
switch self {
case .A:
return "abc"
case .B:
return "bcd"
case .C:
return "cde"
case .D:
return "def"
case .E:
return "efg"
}
}
}
< /code>

... и хочу добавить описания в Pickerview < /code>. Я знаю, как настроить функции для представления, но теперь я застрял на подсчете случаев перечисления и добавление описаний. < /P>

Согласно документации и разным вопросам, Добавление Caseireateable < /code> должно позволить вызову < /p>

MyEnum.allCases.count
< /code>

... но я могу только получить доступ к Allcases < /code> из файла enum. Извне (так что из моего класса ViewController) я могу только позвонить myEnum.allcases 
, который не получил count , и, честно говоря, я даже не уверен, что Allcasases возвращает точно (это не обычный массив, вы можете использовать count < /code> on). < /p>

Добавление этого кода (источник) в файл enum, по крайней мере, позволяет считать счет Случаи: < /p>

static let count: Int = {
var max: Int = 0
while MyEnum(rawValue: max) != .none { max += 1 }
return max
}()
< /code>

... но разве не должно быть более простого способа сделать это с помощью Swift 4.2+? < /p>

Как мне получить список описаний случаев, чтобы заполнить мой пикеерв (так «ABC», «BCD», ... - предпочтительно без жесткого кодирования)?

Подробнее здесь: https://stackoverflow.com/questions/556 ... om-outside
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»