如何在 swift 中检查处于失败状态的 JSON 条件
Posted
技术标签:
【中文标题】如何在 swift 中检查处于失败状态的 JSON 条件【英文标题】:How to check JSON conditions in Failed status in swift 【发布时间】:2019-11-13 17:01:43 【问题描述】:从 JSON 我得到成功和失败状态,我能够检查成功状态,但这里无法检查登录中的失败状态条件。登录页面包含电话号码和密码文本字段。
如果我输入未注册的电话号码,我需要在警报中显示以下消息:
[“status”:失败,“msg”:电话号码不存在]
如果我输入了错误的电话号码密码,那么我需要在警报中显示以下消息:
["status": 失败, "msg": 你输入了错误的密码]
如果我输入了错误的电话号码和密码,那么我需要在提示中显示以下消息:
[“status”:失败,“msg”:无效凭证]
但我无法检查所有条件,如果我输入错误的密码或未注册的电话号码,我一直只会得到Invalid Credentials
。
在此处的注册页面中,我收到uid
以使用电话号码和密码成功注册:
do
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: Any]
print("the json of otppppppppp \(json)")
DispatchQueue.main.async
if (self.otpTextField.text == String(self.otpField ?? 12))
print("registration successfullllll...")
let mobileNum = json["mobile_number"] as! [String : Any]
self.regUid = mobileNum["id"] as? String
let name = mobileNum["name"] as? String
let phNum = mobileNum["username"] as? String
DispatchQueue.main.async
KeychainWrapper.standard.set(self.regUid!, forKey: "regUid")
KeychainWrapper.standard.set(phNum!, forKey: "user_phnum")
KeychainWrapper.standard.set(self.passwordTextField.text!, forKey: "user_password")
let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
self.present(loginVC, animated: true)
在登录页面无法检查电话号码是否已注册,是不是注册手机的密码错误。
我一直显示 Invalid Credentials
失败状态:
do
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: Any]
print("the json of loginnnnnn \(json)")
var loginStatus = json["status"] as? String
DispatchQueue.main.async
if loginStatus == "Failed"
AlertFun.ShowAlert(title: "", message: "Invalid Credentials", in: self)
else
self.Uid = json["id"] as? String
let emailL = json["user_email"] as? String
print("login uid \(String(describing: self.Uid))")
KeychainWrapper.standard.set(emailL ?? "", forKey: "user_email")
let saveUserId: Bool = KeychainWrapper.standard.set(self.Uid!, forKey: "Uid")
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)
let navigationController = mainStoryBoard.instantiateViewController(withIdentifier: "HomeNavigation")
let appDelagate = UIApplication.shared.delegate
appDelagate?.window??.rootViewController = navigationController
请帮我在登录页面检查以上条件。
【问题讨论】:
如果我理解你的意思,“密码错误”响应将从登录请求返回到服务器。在这种情况下 loginStatus 应该有这个值。请好好学习你的英语。很难理解这个问题。 @RealNmae,从服务器我得到一个成功状态,在失败状态下,我收到不同条件下的不同消息,比如如果未注册的电话号码表示phone number doesn't exist
,而注册的电话号码密码错误则表示you have entered wron password
,如果我输入 phnum 和密码错误意味着 invalid credentials
..
@RealNmae,我已经编辑了我的问题,请帮助
您可以做的只是显示“msg”值。并检查状态以显示不同的颜色(或任何其他逻辑)。 if(status == "Success")dosomethingelsedosomething
不清楚你在问什么。没有代码检查“味精”,你怎么知道它是什么?
【参考方案1】:
据我了解,您希望根据从 JSON 获得的状态显示不同的消息。
你可以简单地做到这一点。
AlertFun.ShowAlert(title: "", message: json["msg"], in: self)
为了安全起见,应该使用保护语句解开 json["msg"] 的值并将其显示在警报中。
【讨论】:
你是对的,我没有给出 json "msg" ,我是在警告中给出我自己的消息,这就是为什么会出现问题,谢谢你的问题解决了,我知道这是个愚蠢的错误,但我真的很新到ios 不用担心。你会轻松赶上的。以上是关于如何在 swift 中检查处于失败状态的 JSON 条件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Dev 的状态栏中检查哪些通知处于活动状态?
如何检测 UIAccessibilityRequestGuidedAccessSession 在设备上是不是处于活动状态,iOS swift?