协议类型 '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
    }