比较UIColors失败了,但哈希是否相等?

时间:2016-11-03 01:08:04

标签: ios swift dictionary uicolor

我使用UIColor映射到字典中的值,但我碰到了一件非常奇怪的事情。我的一半键返回正确的值,而另一半则没有。当我使用isEqual比较UIColors时,它们返回false,但是hash匹配得很好。

 for key in colorToAllocationCurrent.keys {
            print("\(key.hash) ---> \(currentColor!.hash)")
            print(key.isEqual(currentColor))
        }

返回以下内容:

144048128 ---> 151431738
false
155123712 ---> 151431738
false
147739933 ---> 151431738
false
151431738 ---> 151431738 <-------- EQUAL?
false

关于为什么会出错的任何想法?我已经检查了UIColor的内容,他们也是一样。

当我打印颜色的描述而不是哈希时,颜色再次显示相同。奇怪的是它可以处理一半的颜色。

 for key in colorToAllocationCurrent.keys {
            print("\(key.description) ---> \(currentColor!.description)")
            print(key.isEqual(currentColor))
        }

UIExtendedSRGBColorSpace 1 0 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false
UIExtendedSRGBColorSpace 1 1 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false
UIExtendedSRGBColorSpace 1 0.333333 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false
UIExtendedSRGBColorSpace 1 0.666667 0 1 ---> UIExtendedSRGBColorSpace 1 0.666667 0 1
false

1 个答案:

答案 0 :(得分:1)

我不太确定这样做的目的,但您应该注意Equatable确实采用UIColor,这意味着您可以检查{{1}的相等性使用UIColor的实例,例如:

==

希望它有所帮助。