如何在 64 位 上不丢失地存储 UIColor 到 CoreData? 在 32 位上,返回正确的 UIColor。
CoreData 设置
- 属性类型:可转换
- NSManagedObject 子类属性:@NSManaged var color: UIColor?
存储颜色值之前
color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
输出例如64 位红色:
0.20000000000000018
32位输出红色
0.199999928
从 CoreData 获取颜色后
color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
输出例如64 位红色:
0.20000000298023224
在 32 位上输出红色:
0.199999928
产生的问题
使用 == 的颜色比较在 64 位上失败,因为值略有不同。在 32 位上一切正常,颜色比较成功。
最佳答案
将 NSKeyedArchiver.archivedDataWithRootObject(color)
分配给数据变量并将其保存到您的核心数据存储中。
要读取数据,只需将 NSKeyedUnarchiver.unarchiveObjectWithData(colorData)
分配给颜色变量即可。
如果您想知道如何比较 float ,您可以随时引用 this .
关于swift - 将 UIColor 存储在 CoreData 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434940/