首页 > 解决方案 > 在 Swift 中传递所有枚举值

问题描述

我必须传递一个枚举数组作为函数参数,大多数时候我必须传递枚举的每一个案例。有没有一种简写的方法来包含所有而不是[.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"
}

标签: iosswiftenums

解决方案


您可以在枚举类型上使用 .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"
    }

如果你能够使用这种技术。


推荐阅读