В ролях из словаря.Keys?»к несвязанному типу '[Any]' всегда происходит сбой - PullRequest
0 голосов
/ 12 сентября 2018

я получаю это предупреждение,

В ролях из словаря. Ключи? к несвязанному типу [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
    }

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

@ Свип объяснил четко.В вашем случае я думаю, что это поможет

let keyArray = dict["key"] as? [String]
0 голосов
/ 12 сентября 2018
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) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...