为什么我不能显示打印数据?

时间:2018-07-10 16:40:37

标签: json swift3

我在Alamofire lib中有这段代码,我正在尝试打印nome的数据,但是结果只是“(lldb)”,为什么?

@IBAction func botaoAcesse(_ sender: Any) {

let cpf = self.campoCPF.text
let senha = self.campoSenha.text

let param = ["cpf": cpf, "senha": senha, "method": "app-get-login", "plataforma":"ios"]
var _: HTTPHeaders = ["Content-Type": "application/json"]
let url = "http://easypasse.com.br/gestao/wsLogin.php"

Alamofire.request(url, method:.post, parameters:param,encoding: JSONEncoding.default).responseJSON { response in
    switch response.result {
    case .success:
        print(response)
        if let JSON = response.result.value as? [String: Any] {
            let registro =  JSON["registro"] as? String
            let usuario = JSON["usuario"] as? String
            let nome = JSON["nome"] as? String
            print(nome!)

        }

    case .failure(let error):
        print(0,"Error")
    }
}

}

结果是

enter image description here

2 个答案:

答案 0 :(得分:3)

请(了解)读取JSON –实际上是Swift集合类型的输出。没关系,在两种情况下,{}都代表字典。

registrousuario的值都是字典,并且registrojson的子代,而usuario是{{1}的子代},而registronome的子代。

usuario

尽管如此,在Swift 4中,强烈建议使用if let json = response.result.value as? [String: Any], let registro = json["registro"] as? [String: Any], let usuario = registro["usuario"] as? [String: Any], let nome = usuario["nome"] as? String { print(nome) }

答案 1 :(得分:0)

看起来您正在混合字符串,数组和json对象的类型。如果您尝试这样的事情怎么办?

    let nome = response.registro.usuario.nome as? String

如果您收到JSON响应,则在将响应转换为字符串之前,先将所有变量分配出去。处理对象时,JSON易于使用。