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

iOS中RaveSDK交易成功后响应为空且遇类型转换错误求助

问题解决:交易响应为空 + Swift类型转换错误

错误原因分析

  1. 类型转换错误:responseData是可选类型的Swift字典[String:Any]?,无法直接强制转换为NSDictionary,可选值必须先解包才能进行类型转换或操作。
  2. 响应为空未处理:原代码没有判断responseData是否为nil或空字典,直接强制转换会引发崩溃或逻辑错误。

修复后的代码

func transactionSuccessful(flwRef: String?, responseData: [String : Any]?) {
    // 先处理响应为空的情况
    guard let dataDic = responseData, !dataDic.isEmpty else {
        // 响应为空时的处理逻辑,比如提示用户交易状态异常
        self.customerVerified(flutterWaveToken: "")
        return
    }
    
    // 安全获取交易状态并判断
    if let status = dataDic["status"] as? String, status == "success" {
        // 从响应中提取正确的flutterWaveToken(示例,根据实际接口返回字段调整)
        let token = dataDic["flutterWaveToken"] as? String ?? ""
        self.customerVerified(flutterWaveToken: token)
    } else {
        self.customerVerified(flutterWaveToken: "")
    }
}

关键优化点

  • 使用guard let安全解包responseData,同时判断字典是否为空,避免空值引发的崩溃。
  • 直接使用Swift原生字典的下标取值,配合as? String进行类型安全转换,替代NSDictionary的get方法,更符合Swift语法规范。
  • 增加了从响应中提取真实token的逻辑(需根据实际接口返回字段调整),原代码无论成功失败都传空字符串不符合业务逻辑。

内容的提问来源于stack exchange,提问作者Adeola Segun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:54:40