我正在尝试找出一种从数组中检索嵌套枚举中的所有元素的方法。我构建嵌套枚举的方式如下:
enum ItemType: Hashable {
case sword(Swords)
case shield(Shields)
case armor(Armors)
}
enum Swords: String, CaseIterable {
case Sabre = "Sabre"
case Xiphos = "Xiphos"
case Broadsword = "Broadsword"
}
enum Shields: String, CaseIterable {
case Buckler = "Buckler"
case HeaterShield = "Heater Shield"
case KiteShiled = "Kite Shield"
}
enum Armors: String, CaseIterable {
case StudArmor = "Stud Armor"
case Chainmail = "Chainmail"
case PlateArmor = "Plate Armor"
}
现在我有一个数组,其中包含 ItemType 枚举中的一些元素:
let loots: [ItemType] = [
.sword(.Xiphos),
.sword(.Broadsword),
.sword(.Sabre),
.armor(.StudArmor),
.armor(.Chainmail),
.shield(.Buckler),
.shield(.HeaterShield)
]
有没有办法将 ItemType.sword 下的所有元素放入另一个数组中?我正在思考:(显然它不起作用)
let item = loots.first(where: {$0 == ItemType.sword})
我怎样才能实现我的目标?或者我是否必须以不同的方式重建我的枚举?
请告诉我。
先感谢您。
您可以将计算属性添加到枚举中
ItemType
以检查它是否是一把剑:或者如果您愿意
if case
而不是switch
:您可以简单地获取第一个项目 isSword 或过滤它们:
请注意,Swift 命名约定是以小写字母开头来命名所有枚举案例。