Estou tentando descobrir uma maneira de recuperar todos os elementos em uma enumeração aninhada de uma matriz. A maneira como construí minha enumeração aninhada da seguinte forma:
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"
}
Agora eu tenho uma matriz que contém alguns dos elementos da enumeração ItemType:
let loots: [ItemType] = [
.sword(.Xiphos),
.sword(.Broadsword),
.sword(.Sabre),
.armor(.StudArmor),
.armor(.Chainmail),
.shield(.Buckler),
.shield(.HeaterShield)
]
Existe uma maneira de colocar todos os elementos em ItemType.sword em outro array? Estou pensando na linha de: (obviamente não funciona)
let item = loots.first(where: {$0 == ItemType.sword})
Como posso atingir meu objetivo? Ou tenho que reconstruir meus Enums de uma maneira diferente?
Por favor, me avise.
Agradeço antecipadamente.