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

Swift字符串莫名截断/容量不足的问题求助

Swift字符串莫名截断/容量不足的问题求助

兄弟,太懂你这种明明理论上Swift字符串能装下整本圣经,结果自己的代码/文本却莫名被截断的憋屈感!我帮你梳理几个最可能的原因和解决办法:

先排除最常见的「调试器假象」

Xcode的调试器变量视图为了界面整洁,会自动截断过长的字符串,不是你的字符串真的被截断了,只是显示不全而已!你可以做两个验证:

  • 在代码里加一行 print("字符串长度:\(script.count)"),看看实际字符数是不是符合预期;
  • 直接用 print(script) 把完整内容输出到控制台,控制台里的内容是不会被截断的,能看到真实的字符串全貌。

顺便提一句你的JS代码语法错误

看你贴的JS代码里,这一行有个明显的语法错误:

obj.fromname = json['cargo']['loads'][0]['consignorName];

consignorName 后面少了一个闭合的单引号 ',虽然这不会导致Swift字符串截断,但会导致JS执行失败,建议先补上。

若真的是字符串内容被截断(排除调试显示后)

如果控制台输出也确实截断了,那试试换一种字符串创建方式:

  • 把JS代码放到本地的.js文件中(比如新建LoadDetailsScript.js),然后通过Bundle读取文件内容:
guard let scriptURL = Bundle.main.url(forResource: "LoadDetailsScript", withExtension: "js"),
      let script = try? String(contentsOf: scriptURL, encoding: .utf8) else {
    print("读取脚本失败")
    return
}

这种方式能避免多行字符串拼接时可能出现的隐藏转义或编码问题,也更便于维护JS代码。

关于WKWebView postMessage的截断问题

你提到之前JSON回复被截断,WKWebView的postMessage确实有默认的消息大小限制(不同系统版本可能略有不同),如果是这个问题,可以考虑:

  • 把大的JSON拆分成多个小消息分批发送;
  • 用WKUserScript注入JS时,直接通过回调把数据传递到原生,或者用文件共享等方式传递大内容。

总的来说,90%的概率是调试器显示的问题,先去控制台打印验证一下,应该就能解开疑惑啦!

备注:内容来源于stack exchange,提问作者osku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:13:12