我在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")
}
}
}
结果是
答案 0 :(得分:3)
请(了解)读取JSON –实际上是Swift集合类型的输出。没关系,在两种情况下,{}
都代表字典。
键registro
和usuario
的值都是字典,并且registro
是json
的子代,而usuario
是{{1}的子代},而registro
是nome
的子代。
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易于使用。