実現させること
-
enumの中にtitleTextという変数を保持しておき、ForEachの中で各caseのtitleTextを表示する
enum SectionTitle {
case ALL
case NORMAL
case CHECKED
case CURRENTLY_DETLETED
var titleText: String {
switch self {
case .ALL: return "すべて"
case .NORMAL: return "未達成"
case .CHECKED: return "チェック済"
case .CURRENTLY_DETLETED: return "最近削除した項目"
}
}
}
やること
1. enumをCaseIterableに対応させる
-
allCasesプロパティに全てのcasesを集めることを許可する
enum SectionTitle: CaseIterable {
2. ForEachに.allCasesを用いる
-
enumの各ケースのcollectionを集めてくれる
ForEach(SectionTitle.allCases, id: \.self) { title in
3. titleTextを呼び出す
- い## 実現させること
-
enumの中にtitleTextという変数を保持しておき、ForEachの中で各caseのtitleTextを表示する
enum SectionTitle {
case ALL
case NORMAL
case CHECKED
case CURRENTLY_DETLETED
var titleText: String {
switch self {
case .ALL: return "すべて"
case .NORMAL: return "未達成"
case .CHECKED: return "チェック済"
case .CURRENTLY_DETLETED: return "最近削除した項目"
}
}
}
やること
1. enumをCaseIterableに対応させる
-
allCasesプロパティに全てのcasesを集めることを許可する
enum SectionTitle: CaseIterable {
2. ForEachに.allCasesを用いる
-
enumの各ケースのcollectionを集めてくれる
ForEach(SectionTitle.allCases, id: \.self) { title in
3. titleTextを呼び出す
- イテレーション変数に
titleを用いてるので、title.titletextとなる
Text(title.titletext)
補足
- caseの名前が英語の場合、公式は
mapメソッドやjoinedメソッドを用いてcaseの名前を一文に連結し、連結した状態でそのままStringに格納するということを行っている。
enum CompassDirection: CaseIterable {
case north, south, east, west
}
print("There are \(CompassDirection.allCases.count) directions.")
// Prints "There are 4 directions."
let caseList = CompassDirection.allCases
.map({ "\($0)" })
.joined(separator: ", ")
// caseList == "north, south, east, west"