ios - UIColor 'NSKeyedUnarchiveFromData' 不应用于取消归档,并将在未来版本中删除
问题描述
您好,我只想在 CoreData 中保存 UIColor 属性,但收到警告:“'NSKeyedUnarchiveFromData' 不应用于取消归档,将在未来版本中删除”
我像这样访问简单的属性:entry.color
我知道这篇文章解释了问题是什么以及如何解决它。
https://www.kairadiagne.com/2020/01/13/nssecurecoding-and-transformable-properties-in-core-data.html
https://danielbernal.co/coredata-transformable-and-nssecurecoding-in-ios-13/
我只是想为什么没有专门针对 UIColor 的示例代码,我认为许多开发人员正是需要这个。
编辑:
我将它从 Transformable 更改为 String 并使用了这个扩展,当然主要应用程序中的小调整是必要的,但它有效 :)
// https://stackoverflow.com/questions/14051807/how-can-i-get-a-hex-string-from-uicolor-or-from-rgb/40018698
extension UIColor {
func toHexString() -> String {
var r:CGFloat = 0
var g:CGFloat = 0
var b:CGFloat = 0
var a:CGFloat = 0
getRed(&r, green: &g, blue: &b, alpha: &a)
let rgb:Int = (Int)(r*255)<<16 | (Int)(g*255)<<8 | (Int)(b*255)<<0
return String(format:"#%06x", rgb)
}
}
// https://stackoverflow.com/questions/1560081/how-can-i-create-a-uicolor-from-a-hex-string
extension UIColor {
convenience init(hexaString: String, alpha: CGFloat = 1) {
let chars = Array(hexaString.dropFirst())
self.init(red: .init(strtoul(String(chars[0...1]),nil,16))/255,
green: .init(strtoul(String(chars[2...3]),nil,16))/255,
blue: .init(strtoul(String(chars[4...5]),nil,16))/255,
alpha: alpha)}
}
解决方案
推荐阅读
- javascript - 在 Firefox/Safari 中使用 document.body 上的 scrollLeft 进行水平滚动不起作用
- github - GitHub 项目中的泳道
- python - LIST 作为递归函数中的参数的奇怪行为
- android - IllegalStateException:分析失败:java.lang.AssertionError:注释树尚未归属:@kotlin.Metadata
- python - 在列表理解中附加到列表
- makefile - Makefile 忽略现有目录
- typescript - 将 Typescript 项目打包成可执行文件
- apache-spark - 如何在pyspark中获取嵌入的角度javascript文本框值
- java - 如何使用 bluecove 在 Java 中断开 BT 设备?
- c# - 我正在尝试为 iOS 使用消息模板