ios - 如何将 SwiftUI 中的颜色类型存储到 CoreData 中?
问题描述
我尝试在核心数据中使用 Transformable 类型,但无法将 Color 转换为 NSObject。如果我想存储颜色信息应该怎么做?
解决方案
您可以使用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!))
推荐阅读
- reactjs - 尝试导入错误:“OBJLoader”未从“三”导出(导入为“三”)
- apache-nifi - 一个处理器中的多个依赖创建语句
- npm-install - Npm install 动作超级慢:finalize
- java - XSLT:如何在同一行中制作 2 个零件?
- amazon-dynamodb - 如何在 dynamodb 查询中按时间戳排序
- python - 如何在 sphinx 中渲染 readme.md,其中包含一些图像的相对路径
- google-play - Play 管理中心无法点击创建新发布按钮
- c++ - 在不进行内存复制的情况下,在 C++ 中获取一定范围的内存
- ios - 快速调整日期选择器和 TextView 的大小有什么问题
- regex - 在多行中提取两个字符串之间的数字