![](/img/trans.png)
[英]Value of protocol type 'Any' cannot conform to 'Equatable'; only struct/enum/class types can conform to protocols
[英]Value of protocol type 'Any' cannot conform to 'Equatable' Swift
我正在尝试从“libraryArray”中删除“songDict”,但它会触发错误。
var libraryArray = UserDefaults.standard.value(forKey: "LibraryArray") as! [Dictionary<String, Any>]
var songDict = Dictionary<String, Any>()
var arr = libraryArray.filter {$0 != songDict}
这是错误。 协议类型“Any”的值不能符合“Equatable”; 只有结构/枚举/类类型可以符合协议
正如错误所说,您不能像这样比较两个字典,因为它们不符合Equatable
协议。 最好为您的数据使用结构 model 而不是Dictionary
。
struct Library: Equatable {
let id: String
...
}
但是,如果您不想这样做,您仍然可以通过将其中任何键的值相等来检查与您的字典是否相等。
var arr = libraryArray.filter { (dict) -> Bool in
dict["id"] as? String == songDict["id"] as? String
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.