1
私はUIColorを使って辞書の値にマップしていますが、私は本当に奇妙なことにぶつかりました。キーの半分が正しい値を返し、残りの半分は正しい値を返します。私がisEqualを使用してUIColorsを比較すると、falseを返しますが、ハッシュはちょうどいいです。UIColorsの比較に失敗しましたが、ハッシュ値は同じですか?
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
実際に色は同じですか?私はよく分かりませんが、isEqual関数はハッシュではなく色の値をチェックしている可能性があります。 – Yan
そうですね、それらを印刷すると色が同じに見えます。 – Recusiwe
ハッシュが等しく、オブジェクトではない限り、この記事をチェックしてください。http://nshipster.com/equality/「しかし、逆は成立しません。二つのオブジェクトがハッシュ値を等しくする必要はありません。 is equal "isEqualがfalseを示す色を印刷できますか? – Yan