[英]Get value of json response swift
這是我的代碼:
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
print(json)
let success = json ["success"] as? Int
print("Success: \(success)")
這是我的輸出:
{
error = "Account does not exist, please create it!";
}
Success: nil
`
那么,在let success = json ["success"] as? Int
let success = json ["success"] as? Int
,一切正常,但是為什么我在此行之后的輸出為nil
?
這是我的PHP:
public function login($username,$password) {
$query = "Select * from users where username = '$username' and password = '$password'";
$result = mysqli_query($this->connection, $query);
if (mysqli_num_rows($result) > 0) {
$json['success'] = 'Welcome '. $username . '!';
echo json_encode($json);
mysqli_close($this->connection);
} else {
$json['error'] = 'Account does not exist, please create it!';
echo json_encode($json);
mysqli_close($this->connection);
}
let success = json ["success"] as? Int
當您使用此行時,它將提取鍵“成功”的值。 由於您的json響應不包含該字段,因此它將成功變量設置為nil。
除錯誤鍵外,您還需要返回成功鍵。
成功nil
因為JSON中不存在鍵“成功”。
X as? Int
X as? Int
=盡可能使x由X轉換為Int
。 如果不可能(因為該值為nil或該值不能轉換為Int
),則將其設置為Nil
。 那就是問號。
所以,我會這樣做:
if let success = json ["success"] as? Int {
print("Success: \(success)")
} else {
// Failed
}
您還可以更改PHP代碼,以確保它始終返回“成功”鍵。 但是,我建議您使用上面的Swift代碼,因為這樣一來,您就永遠安全了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.