ios - 在 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"
}
解决方案
您可以在枚举类型上使用 .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"
}
如果你能够使用这种技术。
推荐阅读
- unity3d - 你可以在 Unity 中使用 HTC Vive 上的耳机摄像头吗
- laravel - Nginx,带有斜杠的 url 和查询字符串中断路径解析,用于 query_string 和 request_uri
- snakemake - shell: 和 run: 都可以在一个规则中使用吗?
- python-3.x - AttributeError:“ElectricCar”对象没有属性“battery_size”
- javascript - Jquery - 单击后按钮未禁用
- python-3.x - noLoop 是否停止执行绘制?
- python - 过滤数据框中包含某个特定字符串的行
- r - 数据框列表到绘图列表;for 循环,lapply
- sql - 查找一组行的 AVG DATEDIFF
- sql - Excel VBA - microsoft Office Access 数据引擎找不到对象