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

Swift UIKit中获取相似食谱API调用失败排查求助

排查步骤整理

一、先确认VC间传递的recipeID有效性

  • 在fetchSimilarRecipes函数第一行打印recipeID的具体值,确认和浏览器中能成功请求的ID完全一致,排除空值、无效ID的问题。
  • 检查BookmarksVC到HomeVC的传值逻辑:
    • 若用segue传值,确认prepare(for:sender:)中正确给HomeVC的recipeID属性赋值,且sender参数没有传递错误。
    • 若用通知/闭包传值,确认通知的监听、闭包的绑定都已正确设置,没有出现传值时机晚于API调用的情况。

二、检查NetworkManager的getSimilarRecipes方法实现与调用

  • 核对方法调用的正确性:
    • 确认方法名、参数名拼写完全匹配(比如参数是recipeID还是id,大小写是否一致),没有因拼写错误导致方法未被触发。
    • 若NetworkManager是单例模式,确认调用时使用的是单例实例(比如NetworkManager.shared.getSimilarRecipes(...)),而非新建了未配置的实例。
  • 检查URL拼接逻辑:
    • 打印拼接后的完整URL,复制到浏览器测试,确认和手动请求的URL完全一致(包括apiKey、number等必填参数),排除参数遗漏、路径拼写错误的问题。
  • 检查请求是否真正发起:
    • 确认URLSessionDataTask创建后调用了resume()方法,这是网络请求发起的必要步骤,遗漏的话请求不会执行。

三、排查网络请求的错误处理与细节

  • 完善错误捕获逻辑:在getSimilarRecipes方法的dataTask回调中,强制打印error信息,排查是否存在权限、网络连接、API限制(比如请求次数超限)等问题。
  • 检查请求配置:
    • 确认项目Info.plist中已配置网络权限(iOS 14+需添加NSNetworkUsageDescription),且没有禁用蜂窝网络的配置。
    • 若API要求特定请求头(比如Accept: application/json),确认已添加到请求中。
  • 验证响应处理:
    • 在dataTask回调中先打印data和response的内容,确认是否收到服务器响应,排除因解析逻辑错误导致误以为没拿到数据的情况。

四、排查线程与回调逻辑

  • 确认getSimilarRecipes的回调闭包是否被正确执行:可以在闭包开头添加打印语句,排查是否因闭包未触发导致后续逻辑没执行。
  • 若回调中涉及UI更新,确认已切换到主线程执行(比如用DispatchQueue.main.async包裹),避免因后台线程更新UI无反应而误判请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:40:52