传递 Swift 中的所有枚举值

Passing all Enum values in Swift

我必须传递一个枚举数组作为函数参数,大多数时候我必须传递枚举的每个案例。是否有一种 shorthand 方法来包含所有内容而不是每次都必须传递 [.NFL, .NBA, .NHL, .MLB, .NCAAM, .NCAAF]?我可以制作所有 属性 以便我可以通过包含所有案例的 .all 吗?

enum LSLeague: String {
    case NFL = "NFL"
    case NBA = "NBA"
    case NHL = "NHL"
    case MLB = "MLB"
    case NCAAM = "NCAAM"
    case NCAAF = "NCAAF"
}

您可以对枚举类型使用 .allCases。

因此,根据您的用例,您可能仍然需要做一些工作,但是如果您使用以下方法,您可以迭代枚举中的每个元素:

    for league in LSLeague.allCases {
       //code here
    }

编辑:@aheze 有一个很好的观点,我只想添加到这个答案中。他说,“确保枚举也符合 CaseIterable”

因此,还要确保更改必须的枚举:

    enum LSLeague: String: CaseIterable {
        case NFL = "NFL"
        case NBA = "NBA"
        case NHL = "NHL"
        case MLB = "MLB"
        case NCAAM = "NCAAM"
        case NCAAF = "NCAAF"
    }

如果你能使用这个技巧。