You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:18:26