协议类型 'Any' 的值不能符合 'Equatable' Swift
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 {[=13=] != songDict}
这是错误。
协议类型'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
}
我正在尝试从“libraryArray”中删除“songDict”,但它触发了一个错误。
var libraryArray = UserDefaults.standard.value(forKey: "LibraryArray") as! [Dictionary<String, Any>]
var songDict = Dictionary<String, Any>()
var arr = libraryArray.filter {[=13=] != songDict}
这是错误。 协议类型'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
}