如何将 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 中?的主要内容,如果未能解决你的问题,请参考以下文章