何らかの関数で辞書の値を選択するためのキーを生成します。生成されたキーと辞書のキーのハッシュ値を比較すると、それらは同一です。しかし、生成されたキーによって辞書から何かを取得しようとすると、nil が返されます。
let vCoords = verticesFrom(axes: result)
print ("Generated:")
vCoords.forEach {
print($0, $0.hashValue)
}
print ("Stored:")
grid.forEach {
print($0.key, $0.key.hashValue, $0.value.data)
}
let data1 = vCoords.map { grid[$0]?.data }.compactMap{$0}
print ("\nData: \(data1)")
リストは次のとおりです。
Generated:
["x": -100.0, "y": -100.0] 8549935799981594856
["x": -100.0, "y": -50.0] -5857979117386601619
["x": -10.0, "y": -100.0] 5216433118710295311
["x": -10.0, "y": -50.0] 3277190687522282455
Stored:
["x": -100.0, "y": -100.0] 8549935799981594856 [NSCalibratedRGBColorSpace 1 1 1 1]
["x": -100.0, "y": -50.0] -5857979117386601619 [NSCalibratedRGBColorSpace 0.583333 0.583333 0.583333 0.666667]
["x": -10.0, "y": -100.0] 5216433118710295311 [NSCalibratedRGBColorSpace 0.685 0.685 0.685 1]
["x": -10.0, "y": -50.0] 3277190687522282455 [NSCalibratedRGBColorSpace 0 0 1 1]
Data: []
もちろん、グリッドごとに vCoords を反復処理して各値を比較することもできますが、この場合、辞書は必要なく、アルゴリズムは遅くなります。何が間違っている可能性がありますか?