首页 > 解决方案 > 无法将“__NSArray0”类型的值转换为“NSDictionary”

问题描述

当我解析我的 json 响应时,这是我的错误

无法将类型“__NSArray0”(0x104bcd838)的值转换为“NSDictionary”(0x104bcf818)。

这是我的代码

@IBAction func LoginAction(_ sender: Any) {

    let parameters: Parameters=[

        "email":emailUser.text!,
        "password":passWord.text!,

        ]
    let url2 = "http://marwen1994.alwaysdata.net/Carpooling/public/loginpost.php"
    Alamofire.request(url2, method: .post, parameters: parameters).responseJSON
        {
            response in
            let A = response.result.value as! Dictionary<String,Any>
          let list = A["items"] as! Dictionary<String,Any>
            let nom = list["name"] as! String
            let pass = A["password"] as! String
            let email = list["email"] as! String
            let adresse = A["adresse"] as! String
            let DateNaissance = A["DateNaissance"] as! String
            let id = A["id"] as! Int
            let numTel = A["num_tel"] as! Int
            if(pass == self.passWord.text)
            {
                UserDefaults.standard.set(true, forKey: "ConnectionStatus")
                UserDefaults.standard.set(id, forKey: "ConnectedID")
                UserDefaults.standard.set(nom, forKey: "nom")
               // UserDefaults.standard.set(prenom, forKey: "prenom")
                UserDefaults.standard.set(email, forKey: "email")
                UserDefaults.standard.set(adresse, forKey: "adresse")
                UserDefaults.standard.set(pass, forKey: "motDePasse")
                UserDefaults.standard.set(numTel, forKey: "numTel")
                UserDefaults.standard.set(DateNaissance, forKey: "DateNaissance")
                self.performSegue(withIdentifier: "toProfile", sender: nil)
            }
            else{
                let alert = UIAlertController(title: "Woah!!!", message: "You inserted a wrong email or a wrong password! Please enter a valid mail and password.", preferredStyle: .alert)

                alert.addAction(UIAlertAction(title: "Ok", style: .cancel, handler: nil))

                self.present(alert, animated: true)
            }
    }
}

标签: ios

解决方案


在没有看到实际 JSON 响应的情况下很难知道错误在哪里,但可能这是一个数组而不是字典

let list = A["items"] as! Dictionary<String,Any>

应该是这样的

let list = A["items"] as! Array

推荐阅读