Swift 4:JSON响应解析问题,认证错误判断逻辑未触发求助
解决SwiftyJSON判断错误凭证提示不触发的问题
嘿,我来帮你搞定这个问题~你说print出来的JSON是{ "msg" : "Invalid Credentials" },但判断分支没触发,大概率是你用错了SwiftyJSON的取值方式。
问题根源
你写的if JSON(msg.self) == "Invalid Credentials"其实完全不对,SwiftyJSON不能这么直接拿字段名转成JSON对象来比较。你需要先从返回的rspJSON里提取出msg对应的字符串值,再和目标字符串对比。
正确的写法示例
这里给你两种安全的写法:
方式1:用可选绑定(推荐,避免空值崩溃)
// 先从rspJSON里取出msg字段的字符串值,再判断 if let errorMsg = rspJSON["msg"].string, errorMsg == "Invalid Credentials" { // 这里写你的弹窗逻辑,比如UIAlertController let alert = UIAlertController(title: "错误", message: errorMsg, preferredStyle: .alert) alert.addAction(UIAlertAction(title: "确定", style: .default)) present(alert, animated: true) }
方式2:用stringValue(如果确定msg字段一定存在)
if rspJSON["msg"].stringValue == "Invalid Credentials" { // 弹窗逻辑 }
额外排查步骤
如果还是没触发,可以先打印一下rspJSON["msg"]的类型和具体值,确认是不是字段名写错(比如大小写问题,后端返回Msg而非msg)或者字段值有多余空格:
print("msg字段类型:", rspJSON["msg"].type) print("msg字段值:", rspJSON["msg"].stringValue)
内容的提问来源于stack exchange,提问作者jgravois
相关产品推荐
相关产品推荐

