传递 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"
}
如果你能使用这个技巧。
我必须传递一个枚举数组作为函数参数,大多数时候我必须传递枚举的每个案例。是否有一种 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"
}
如果你能使用这个技巧。