swift - 来自《字典》的演员.钥匙?到不相关的类型 '[Any]' 总是失败
问题描述
我收到这个警告,
来自“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
}
解决方案
let keyArray = dict?.keys as? [Any]
这里的转换是不可能的,因为dict.keys
它的类型是[AnyHashable: Any].Keys
. 您正在尝试将该类型转换为数组。由于它们根本不相关,因此编译器会警告您这将始终失败。
很可能,您打算转换为[AnyHashable]
[AnyHashable: Any].Keys
从to转换的一种正确方法[AnyHashable]
是使用Array.init(Sequence)
初始化程序:
let keyArray = dict.map { Array($0.keys) }
推荐阅读
- html - 如何使用 Flexbox CSS 将每个元素放在一个角落?
- javascript - 等待 querySelectorAll
- bash - 如何从配置文件中匹配花括号 {} 中的字符串和打印行
- android - Android Studio 相对布局和线性布局不适合某些设备
- dropdown - HTA 中的多级下拉菜单未正确加载
- javascript - 如何使用 PHP 在全日历中显示事件
- javascript - 使用 Google Maps Geocoding API 确定位置的地址
- scala - 泛型函数中 T 的匿名推导
- datetime - 谷歌表格脚本编辑器的功能,在两个不同的列中有一个 TODAY() 和 NOW() 按钮,其中下一个不是该列中的空白
- c++ - 为什么这行代码会产生错误?