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

如何验证Swift编写的API调用代码是否正常返回数据

解决方案

可添加print调试输出的位置

你可以在以下几个位置添加print语句,分别排查不同环节的问题:

  • 拿到接口返回的原始数据时,先打印原始JSON字符串,确认接口返回的内容是否符合预期:
    在guard let data = data else { ... }判断之后添加代码:
// 打印原始响应数据
if let jsonString = String(data: data, encoding: .utf8) {
    print("接口返回原始内容:\(jsonString)")
}
  • 解析成功后打印解析得到的模型数据,确认解析逻辑是否正确:
    在let vehicles = try decoder.decode([Vehicles].self, from: data)之后添加代码:
print("解析成功的车辆列表:\(vehicles)")
  • 错误分支添加打印,确认是否报错、具体是哪个环节报错:
    1. 网络错误分支:if let _ = error { 代码块内加print("网络请求错误:\(error!.localizedDescription)")
    2. 响应码错误分支:guard let response = response as? HTTPURLResponse... 判断之前加print("接口响应码:\((response as? HTTPURLResponse)?.statusCode ?? -1)")
    3. 解析错误分支:catch { 代码块内加print("JSON解析错误:\(error)")

调用接口时的输出方式

你调用getVehicles方法时,在尾随闭包里也可以直接打印结果,示例调用代码:

APICaller.shared.getVehicles(for: "你的业务ID", IMEI: 你的IMEI数值) { result in
    switch result {
    case .success(let vehicles):
        print("请求成功,车辆数据:\(vehicles)")
    case .failure(let error):
        print("请求失败,错误类型:\(error)")
    }
}
// 如果是命令行项目,需要加以下代码防止程序提前退出,等待网络请求回调
RunLoop.main.run(until: Date().addingTimeInterval(120))

注意:如果是纯Swift CLI项目,默认主线程执行完同步代码就会直接退出,不会等待异步网络请求的回调,必须加上最后一行RunLoop的代码,才能等到返回结果输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:04