Как я могу хранить UIColor в CoreData без потерь на 64 бит? На 32 бит возвращается правильный UIColor.Магазин UIColor в CoreData
CoreData установка
- тип атрибута: трансформер
- NSManagedObject подкласс объекта: @NSManaged уаг цвет: 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-битном уровне все прекрасно, и сравнение цветов успешно завершено.
Ни 32-разрядные, ни 64-разрядные поплавки могут сохранить номер '0.2' точно. Сравнение чисел с плавающей запятой с '==' в большинстве случаев является плохим. –
Попробовали сохранить значения цвета в Hex вместо этого, чтобы избежать проблемы точности. –
Как вы архивируете UIColor? делать == с float/double никогда не умная идея! Посмотрите на http://stackoverflow.com/questions/1275662/saving-uicolor-to-and-loading-from-nsuserdefaults – Volker