枚举:计算并列出所有案例(从外部!)

Nep*_*eph 3 enums ios swift

我已经在自己的文件(“ MyEnum.swift”)中得到了这个枚举(Xcode 10 / Swift 5):

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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...,并希望将说明添加到中PickerView。我知道如何为视图设置功能,但现在我只能计算枚举用例并添加描述。

根据文档和不同的问题,添加CaseIterable应该可以进行呼叫

MyEnum.allCases.count
Run Code Online (Sandbox Code Playgroud)

...但是我只能allCases从枚举文件中访问。从外部(因此从我的ViewController类),我只能调用MyEnum.AllCases,这还没有count,老实说,我什至不知道AllCases返回的确切内容(您不能在上面使用普通数组count)。

将此代码(source)添加到枚举文件中至少可以计算出这种情况:

static let count: Int = {
    var max: Int = 0
    while MyEnum(rawValue: max) != .none { max += 1 }
    return max
}()
Run Code Online (Sandbox Code Playgroud)

...但是使用Swift 4.2+是否应该有一种更简单的方法?

我如何获取案件描述列表,以用PickerView填充(例如“ abc”,“ bcd”,...-最好不对其进行硬编码)?

Pau*_* T. 7

我尝试了1个文件:

enum TestEnum: CaseIterable {
    case test1
    case test2
}
Run Code Online (Sandbox Code Playgroud)

在另一个类的另一个文件中,我写道:

let count = TestEnum.allCases.count
Run Code Online (Sandbox Code Playgroud)

它有效,但是我注意到当我键入“ allCases”时没有显示

在此处输入图片说明

我需要手动编写