我尝试实现以下方法,通过比较字典数组的特定键来删除字典数组中的双重条目。但是,由于以下错误,此扩展方法将不起作用:
二元运算符 == 不能应用于两个 '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
}
}