如何将 SwiftUI 中的 Color 类型存储到 CoreData 中?

bui*_*404 5 core-data ios swift swiftui

我尝试在核心数据中使用 Transformable 类型,但颜色无法转换为 NSObject。如果我想保存颜色信息该怎么办?

fuz*_*uzz 5

您可以使用Transformable,尽管它必须存储为UIColor而不是Color

withRootObject是您要保存的颜色。

另请记住,该myColour类型应该是Data

@NSManaged public var myColour: Data?

然后您可以像下面这样归档数据:

do {
    try obj.myColour = NSKeyedArchiver.archivedData(withRootObject: UIColor.blue, requiringSecureCoding: false)
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

使用以下方法检索它:

func getColour(data: Data) -> Color {
    do {
        return try Color(NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: data)!)
    } catch {
        print(error)
    }

    return Color.clear
}
Run Code Online (Sandbox Code Playgroud)

用法:

Text("This is some blue text.") // we saved it as UIColor.blue earlier.
    .foregroundColor(self.getColour(data: self.data.myColour!))
Run Code Online (Sandbox Code Playgroud)