Похоже, что вы возвращаете массив словарей здесь:
let vCoords = verticesFrom(axes: result)
В частности, что-то вроде (но не словарь, так как он уже соответствует Equatable)
[[String: Int]]
[["x": -100.0, "y": -100.0], ["x": -100.0, "y": -50.0].... ]
Вот что вам нужно изменить, чтобы получить ожидаемый результат:
Если вы еще не создали пользовательский объект для
verticesFrom(axes: result)
,
васследует создать собственный класс и привести его в соответствие с протоколом Equatable
:
class CustomCoordinate: Equatable {
var customX: Int
var customY: Int
// ...
public static func == (lhs: CustomCoordinate, rhs: CustomCoordinate) -> Bool {
return lhs.customX == rhs.customX && lhs.customY == rhs.customY
}
}
В противном случае , если это подразумевает слишком много изменений в вашем проекте и вам необходимо быстрое исправление:
let data1 = vCoords.map ({ vectCoord -> [String: Int]? in // [String: Int]? or whatever objet you are using
grid.first(where: { (customCoord) -> Bool in
return customCoord["x"] == vectCoord["x"] && customCoord["y"] == vectCoord["y"]
})
}).compactMap{$0}