[SwiftUI]列挙体でループをさせる

目次

概要

列挙体を作成して、その列挙体で項目の一覧を作成したいときなどに使える。
列挙体でFor文を作成できるので、その点は便利になったなと。

ソースコード

import SwiftUI

@main
struct TestApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
    var body: some Scene {
        WindowGroup {
            EnumAllView()
        }
    }
}
import Foundation

enum MagicAttribute: String, CaseIterable {
    case fire = "メラ"
    case ice = "ヒャド"
    case wind = "バギ"
    case electro = "デイン"
    case light = "イオ"
    case dark = "ドルマ"
    case earth = "ジバリア"
    case death = "ザキ"
}
import SwiftUI

struct EnumAllView: View {
    var body: some View {
        Spacer()
        ForEach(MagicAttribute.allCases, id:\.self) { attribute in
            Text(attribute.rawValue)
            Spacer()
        }
    }
}

スクリーンショット

詳細

まず、正確にはドラクエの魔法は、ジバリアは「地面」というより「地雷」だし、イオは「光」というより「爆発」だが、その点はご愛嬌。

列挙体にCaseIterableを追加することでallCasesが使えるようになる。
これを使用するとMagicAttribute.allCasesを繰り返し文に使うことができる。
結果、列挙体の内容をForeachを使用して画面に表示できた。