enumの配列から特定の値のみ取得したい場合はfilterを使います。
import UIKit
enum Pokemon {
case pikachu
case zenigame
case hitokage
case hushigidane
}
var pokemons: [Pokemon] = [.pikachu, .hitokage, .zenigame, .hushigidane]
print(pokemons) // [Pokemon.pikachu, Pokemon.hitokage, Pokemon.zenigame, Pokemon.hushigidane]
// ピカチューのみ欲しい場合
pokemons = pokemons.filter({ pokemon in
switch pokemon {
case .pikachu: return true
default: return false
}
})
print(pokemons) // [Pokemon.pikachu]
filterは条件式がtrueの場合返却されるのでswitch文を使い、ピカチューのみを取得しています。
逆にxxxは除外し、残りを全取得したい場合はfalseで指定します。
pokemons = pokemons.filter({ pokemon in
switch pokemon {
case .pikachu, .hitokage, .zenigame: return false
default: return true
}
})
print(pokemons) // [Pokemon.hushigidane]
参考
https://stackoverflow.com/questions/52993205/how-do-i-remove-a-value-from-swift-array-of-enums