☑️
[SwiftUI] @AppStorageでenumを使う場合、RawValueはIntかStringにする
タイトル通りなのですが、UInt8
をRawValue
にしているenum
で@AppStorage
が動作しなくて困りました。
@AppStorage
にはinit
がいくつか用意されています。
ドキュメントによると、以下のとおりです。
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)
RawValue
がUInt8
だとこのどれにも当てはまらないので、当然エラーになります。
Discussion