微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

协议类型“ Any”的值不能符合“ Equatable” Swift

如何解决协议类型“ Any”的值不能符合“ Equatable” Swift

我正在尝试从“ libraryArray”中删除“ songDict”,但这会引发错误

styles = [ 
{'selector':'tbody>tr:first-child>th:first-child','props':[('transform','rotate(90deg)'),]},]
foo = pd.Categorical(['a','b'],categories=['a','b','c'])
bar = pd.Categorical(['d','e'],categories=['d','e','f'])
df = pd.crosstab(foo,bar)
# need to rebuild index as row_0 needs to be part of multiindex key
ri = pd.MultiIndex.from_tuples([tuple([df.index.name,v]) for v in df.index.values])
df.set_index(ri).style.set_table_styles(styles)

这是错误协议类型“ Any”的值不能与“ Equatable”相符;只有struct / enum / class类型可以符合协议

解决方法

正如错误所言,您不能像这样比较两个字典,因为它们不符合Equatable协议。最好将结构用于数据模型,而不要使用Dictionary

struct Library: Equatable {
    let id: String
    ...
}

但是,如果您不想这样做,您仍然可以通过将字典中的任何键的值均等来检查字典是否相等。

    var arr = libraryArray.filter { (dict) -> Bool in
        dict["id"] as? String == songDict["id"] as? String
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。