web-dev-qa-db-fra.com

Expression non optionnelle de type 'AnyObject' utilisée dans une vérification d'option

J'ai créé une extension sur 'Dictionnaire' pour m'aider à analyser JSON. La méthode ci-dessous m'aide à faire ceci:

func toJSONString() -> String? {
    if let dict = self as? AnyObject {
        if let data = try? JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions(rawValue: 0)) {
            if let json = String(data: data, encoding: String.Encoding.utf8) {
                return json
            }
        }
    }
    return nil
}

Le problème se produit sur cette ligne:

if let dict = self as? AnyObject {

Je reçois un avertissement disant "Expression non optionnelle de type 'AnyObject' utilisée dans une vérification d'option"

Comment puis-je résoudre ce problème?

8
Faisal Syed

Supprimez simplement la ligne qui provoque l'avertissement de votre code et transmettez self tel quel à la fonction JSONSerialization. Cela devrait fonctionner sans aucun problème:

extension Dictionary {

    func toJSONString() -> String? {
        if let data = try? JSONSerialization.data(withJSONObject: self, options: JSONSerialization.WritingOptions(rawValue: 0)) {
            if let json = String(data: data, encoding: String.Encoding.utf8) {
                return json
            }
        }

        return nil
    }
}
2
choofie

Vous déballez quelque chose qui a déjà été déballé. Jetez un oeil à ce stackoverflow post