首页 > 解决方案 > 如何将 SwiftUI 中的颜色类型存储到 CoreData 中?

问题描述

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

标签: iosswiftcore-dataswiftui

解决方案


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

withRootObject是您要保存的颜色。

还要记住,myColour应该是 type Data

@NSManaged public var myColour: Data?

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

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

检索它使用:

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

    return Color.clear
}

用法:

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

推荐阅读