事象
@AppStorageで、Colorを保存しようとしたが、以下のエラーが表示された。
No exact matches in call to initializer
解決方法
Color+Extensions
というファイルを作成し(名前は任意)、以下のコードを貼りつける。
import SwiftUI extension Color: RawRepresentable { public init?(rawValue: String) { guard let data = Data(base64Encoded: rawValue) else { self = .black return } do { let color = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? UIColor ?? .black self = Color(color) } catch { self = .black } } public var rawValue: String { do { let data = try NSKeyedArchiver.archivedData(withRootObject: UIColor(self), requiringSecureCoding: false) as Data return data.base64EncodedString() } catch { return "" } } }
これでエラーが消えたかと思います。
参考文献