我收到此警告
“ Dictionary.Keys?”的发布无关类型“ [Any]”总是失败
我不知道如何解决此问题,请帮帮我
class func appendPram(_ url: String?, paramDict dict: [AnyHashable : Any]?) -> String? {
var dict = dict
var returnPath = "\(url ?? "")?"
let keyArray = dict?.keys as? [Any]
for key: String? in keyArray as? [String?] ?? [] {
if (keyArray as NSArray?)?.index(of: key ?? "") == 0 || (keyArray as NSArray?)?.index(of: key ?? "") == keyArray?.count {
if let aKey = dict?[key!] {
returnPath = "\(returnPath)\(key ?? "")=\(aKey)"
}
} else {
if let aKey = dict?[key!] {
returnPath = "\(returnPath)&\(key ?? "")=\(aKey)"
}
}
}
return returnPath
}
答案 0 :(得分:3)
let keyArray = dict?.keys as? [Any]
此处无法进行转换,因为dict.keys
的类型为[AnyHashable: Any].Keys
。您正在尝试将该类型转换为数组。由于它们根本不相关,因此编译器会警告您这将始终失败。
最有可能,您打算转换为[AnyHashable]
从[AnyHashable: Any].Keys
转换为[AnyHashable]
的一种正确方法是使用Array.init(Sequence)
初始化程序:
let keyArray = dict.map { Array($0.keys) }
答案 1 :(得分:0)
@Sweeper解释清楚。对于您而言,我认为这会有所帮助
let keyArray = dict["key"] as? [String]