繁体   English   中英

协议类型“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 {$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM