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

请求成功后Controller中设置分页总页数变量失败问题

问题分析与解决

核心问题

你遇到的maxPages赋值后始终为nil的情况,大概率是类型不匹配导致的:服务器返回的totalPage字段值虽然是6,但实际类型并非Int,而是String(比如JSON里返回的是"6"而非数字6),直接用as? Int转换会失败,最终赋值为nil。

验证步骤

先在代码中添加打印,确认totalPages的实际类型:

let totalPages = data["totalPage"]
print("totalPages 值:\(totalPages),类型:\(type(of: totalPages))")

如果打印结果显示类型为String,就能确认问题根源。

解决方案

根据实际类型做针对性转换:

  1. 如果是String类型:先转成String再转Int
if let totalPagesStr = totalPages as? String {
    self.maxPages = Int(totalPagesStr)
}
  1. 兼容多种类型(更安全):同时处理String和Int/NSNumber的情况
if let totalPagesInt = totalPages as? Int {
    self.maxPages = totalPagesInt
} else if let totalPagesStr = totalPages as? String {
    self.maxPages = Int(totalPagesStr)
} else if let totalPagesNum = totalPages as? NSNumber {
    self.maxPages = totalPagesNum.intValue
}

额外排查点

  • 检查键名是否完全匹配:确认服务器返回的是totalPage而非totalPages(注意单复数),不过你能拿到Optional(6),这一点大概率没问题。
  • 确保回调在主线程执行:虽然其他变量赋值正常,但如果回调在后台线程,偶尔可能出现变量更新不及时的情况,可以强制在主线程赋值:
DispatchQueue.main.async {
    // 这里放maxPages的赋值代码
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:57:49