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
相关产品推荐
相关产品推荐

