我尝试在项目目标和单元测试目标中加载相同的.xml文件。
似乎是类似这样的问题:Xcode. Image resources added to a test target are not copied into the tests bundle
在项目目标中,此代码片段运行良好。我只需要将“ xmlString.xml”文件添加到“复制文件”(参见图1)。
func parseFile() {
let stringPath = Bundle.main.path(forResource: "xmlString", ofType: "xml")
let url = NSURL(fileURLWithPath: stringPath!)
...
}
如果我运行单元测试目标中插入的代码,则会收到错误消息,因为找不到.xml文件。我试图将.xml文件添加到“副本捆绑资源”中,但没有成功(参见图2)。
使其正常工作的唯一方法是使用绝对路径
func parseFile() {
let stringPath: String? = "/Users/.../Documents/Git/.../.../.../.../xmlString.xml"
let url = NSURL(fileURLWithPath: stringPath!)
...
}
是否可以使用Bundle.main.path(forResource: "xmlString", ofType: "xml")
函数代替绝对路径?
谢谢!
答案 0 :(得分:1)
您可以像这样获得项目的捆绑包:
let projectBundle = Bundle(for: AnyClassInMyProject.self)
用项目中实际类的名称替换AnyClassInMyProject
。
然后您可以像这样获取.xml文件的路径:
let stringPath = projectBundle.path(forResource: "xmlString", ofType: "xml")