如何存储UIColor在CoreData上没有丢失64位? 在32位上返回正确的UIColor。在CoreData中存储UIColor
CoreData设置
- 属性类型:变形的
- NSManagedObject子类物业:@NSManaged VAR颜色:的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位:在32位
0.20000000298023224
输出红色:
0.199999928
而来的问题
颜色比较,使用==,失败在64位,因为这些值略有不同。在32位一切都很好,颜色比较成功。
既不32位也不64位浮点数可以存储'数0.2'准确。在大多数情况下,将浮点数与'=='比较是不好的。 –
已尝试保存十六进制颜色值,而不是完全避免精度问题。 –
你是如何归档UIColor的?用float/double来做==绝不是一个聪明的主意!看看http://stackoverflow.com/questions/1275662/saving-uicolor-to-and-loading-from-nsuserdefaults – Volker