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

Posted

技术标签:

【中文标题】如何将 SwiftUI 中的颜色类型存储到 CoreData 中?【英文标题】:How to store type Color from SwiftUI into CoreData? 【发布时间】:2019-12-23 02:22:25 【问题描述】:

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

【问题讨论】:

我相信这会对你有所帮助:***.com/questions/23835093/… @DevKyle 谢谢,我之前试过这种方式,但是 SwiftUI 中的 Color 类型无法转换为 NSData 我找到了关于这个主题的优秀文章。 yozy.net/2020/10/storing-colors-in-core-datathe-whole-story 【参考方案1】:

您可以使用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)

检索它使用:

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!))

【讨论】:

以上是关于如何将 SwiftUI 中的颜色类型存储到 CoreData 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swiftUI中将背景颜色添加到列表中

如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?

Swiftui:从 JSON 中获取动态颜色渐变?

SwiftUI 如何根据获取的数据更改视图的背景颜色?

SwiftUI 2.0如何更改表单部分的背景颜色[重复]

如何更改 SwiftUI 和 iOS 14 中的单元格背景颜色?