.钥匙?到不相关的类型 '[Any]' 总是失败,swift,dictionary"/>

首页 > 解决方案 > 来自《字典》的演员.钥匙?到不相关的类型 '[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
    }

标签: swiftdictionary

解决方案


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) }

推荐阅读