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

NSBundle path返回nil求助:添加至Copy Bundle Resources的文本文件无法读取

解决测试目标中读取文本文件路径为nil的问题

我之前也碰到过一模一样的坑,给你几个实用的排查和解决方向,应该能帮你搞定:

  • 确认文件是否真的被复制到测试bundle中
    右键你的测试目标,选择「Show in Finder」,找到对应的.app文件后右键「显示包内容」,看看里面有没有你的文本文件。如果没有,说明复制环节出了问题:

    • 去Build Phases的Copy Bundle Resources里,确认文件右侧的目标勾选框里,测试目标是被选中的(有时候拖文件进去默认只勾了主应用目标)。
    • 同时选中文本文件,查看右侧的File Inspector,确保Target Membership里测试目标的复选框也被勾选了——这步很容易被忽略,即使加到Copy列表里,这里没勾也不会复制文件。
  • 检查获取路径的代码是否针对测试bundle
    测试目标的bundle和主应用的bundle是完全分开的!别用Bundle.main来获取路径,要指定测试目标的bundle:
    举个Swift的示例代码:

    // 用当前测试类的类型来获取对应的测试bundle
    guard let filePath = Bundle(for: YourTestClassName.self).path(forResource: "你的文件名", ofType: "txt") else {
        print("文件路径获取失败")
        return
    }
    

    另外要注意文件名的大小写,iOS文件系统是区分大小写的,别把data.txt写成Data.txt了。

  • 清理缓存后重新构建
    Xcode的缓存偶尔会抽风,试试按Cmd+Shift+K清理构建文件夹,再按Cmd+B重新构建测试目标,之后再运行测试看看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:40