☑️

[SwiftUI] @AppStorageでenumを使う場合、RawValueはIntかStringにする

2023/03/21に公開

タイトル通りなのですが、UInt8RawValueにしているenum@AppStorageが動作しなくて困りました。

@AppStorageにはinitがいくつか用意されています。

https://developer.apple.com/documentation/swiftui/appstorage
ドキュメントによると、以下のとおりです。

init(wrappedValue: String, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: Int, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: Data, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: URL, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: Bool, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: Float, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: some RawRepresentable<Int>, _ key: String, store: UserDefaults? = nil)
init(wrappedValue: some RawRepresentable<String>, _ key: String, store: UserDefaults? = nil)

RawValueUInt8だとこのどれにも当てはまらないので、当然エラーになります。

Discussion