特定のキーを比較することにより、辞書の配列内の二重エントリを削除する次の方法を実装しようとしました。ただし、次のエラーのため、この拡張メソッドは機能しません。
二項演算子 == は 2 つの 'Equatable' オペランドに適用できません
これらは明らかに同等であり、同じ型 (Iterator.Element.Value) ですが、なぜ機能しないのでしょうか?
Equatable を制約ではなく特定の型として扱っていることがわかります。ジェネリック型または書き込みでは機能しませんでしたwhere Iterator.Element == [String: Any], Iterator.Element.Value: Equatable。
これを解決する方法についての手がかりはありますか?
extension Sequence where Iterator.Element == [String: Equatable] {
public func removeDoubles(byKey uniqueKey: String) -> [Iterator.Element] {
var uniqueValues: [Iterator.Element.Value] = []
var noDoubles: [Iterator.Element] = []
for item in self {
if let itemValue = item[uniqueKey] {
if (uniqueValues.contains { element in
return itemValue == element
}) {
uniqueValues.append(itemValue)
noDoubles.append(item)
}
}
}
return noDoubles
}
}