You need to enable JavaScript to run this app. RxSwift中URLSession获取字符串响应仅打印字节数、无完整输出
优惠活动
大模型
产品
解决方案
定价
更多

RxSwift中URLSession获取字符串响应仅打印字节数、无完整输出

问题根因

控制台只输出类似4676 bytes的内容,本质是对Swift中Data类型的属性使用有误:

  • 直接调用data.description获取到的是Data对象的元描述信息,只会展示当前二进制数据的总字节长度,不会把数据本身转成可读文本输出
  • 现有代码把字节长度的描述当成了接口返回的字符串,自然无法打印出完整的接口内容
修正方案

调整map闭包逻辑,主动用UTF-8编码把二进制Data转成可读字符串,再执行打印和返回。
替换后的代码:

let request = URLRequest(url: URL(string:"https://itunes.apple.com/search?term=\(query)&limit=\(size)&media=\(mediatype)")!)
return URLSession.shared.rx.data(request: request)
    .map { data -> String in
        // 以UTF-8编码转码二进制数据,增加转码失败的兜底逻辑
        guard let fullResponse = String(data: data, encoding: .utf8) else {
            return "响应字符串转码失败"
        }
        // 打印完整返回内容,避免被NSLog的字符串拼接逻辑截断
        NSLog("iTunes接口完整返回:\n%@", fullResponse)
        return fullResponse
    }
日常调试提醒
  • 打印网络返回时,不要直接把Data对象传入print/NSLog,否则控制台永远只会输出字节长度的元信息
  • 如果遇到接口返回中文乱码,可以尝试把编码参数切换为.isoLatin1做兼容;iTunes官方搜索接口返回标准UTF-8内容,无需额外做编码适配
  • 若Xcode控制台依然截断长日志,可以在控制台的输出设置里调高单条日志的最大展示长度,避免长文本被自动折叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 00:36:02