✍️
【Swift】enumをCaseIterableに準拠させて、enumの全要素を取得
はじめに
この記事の主張
enumの全要素を取得するには、以下2つが必要
- enumをCaseIterableに準拠させる
-
allCases
タイププロパティを使用する
本題
完成系
import SwiftUI
enum Feelings: String, CaseIterable {
case bad = "😢"
case soso = "🙂"
case good = "😊"
var id: String { rawValue }
}
struct ShowEnumAllCasesView: View {
var body: some View {
HStack {
ForEach(Feelings.allCases, id: \.id) { feeling in
Text(feeling.rawValue)
.font(.largeTitle)
}
}
}
}
1️⃣ enumをCaseIterableに準拠させる
enum Feelings: String, CaseIterable {
case bad = "😢"
case soso = "🙂"
case good = "😊"
var id: String { rawValue }
}
CaseIterableに準拠させることで、以下のタイププロパティを利用できるようになります。
static var allCases: Self.AllCases { get }
allCases
タイププロパティを使用する
2️⃣ CaseIterableに準拠させたあとは、enum名.allCases
ですべての要素をを含む配列を取得することができます。
HStack {
ForEach(Feelings.allCases, id: \.id) { feeling in
Text(feeling.rawValue)
.font(.largeTitle)
}
}
まとめ
enumの全要素を取得するには、以下2つが必要
- enumをCaseIterableに準拠させる
-
allCases
タイププロパティを使用する
Discussion