Swift中如何检测Optional([:])值?解决==运算符报错问题
解决Optional([:])的检测问题
你遇到的编译错误,是因为Swift无法直接对[AnyHashable: Any]?这种可选字典做相等比较——由于字典的值类型是Any,它没有遵守Equatable协议,编译器无法自动推导两个这类字典的相等逻辑。
可以用以下两种可靠的方式检测并忽略Optional([:]):
安全解包后判断字典是否为空
先通过可选绑定解包,再检查字典是否非空,只有满足条件时才打印:if let unwrappedDict = a, !unwrappedDict.isEmpty { print(a) }如果你想更直接地写出“忽略包裹空字典的可选值”的逻辑,也可以这样写:
if !(a != nil && a!.isEmpty) { print(a) }使用Switch语句做模式匹配
利用Swift的模式匹配特性,精准匹配“包裹空字典的可选值”,其他情况执行打印:switch a { case .some(let dict) where dict.isEmpty: break // 忽略该情况 default: print(a) }
内容的提问来源于stack exchange,提问作者The Outstanding Question Asker
相关产品推荐
相关产品推荐

