我一直在尝试在iOS应用程序的单元测试中加载一个简单的文本文件。

NSString* resourcePath = [[NSBundle mainBundle] pathForResource: @"stopPointsInCircleData" ofType:@"txt"];
NSString* stopPointData = [NSData dataWithContentsOfFile: resourcePath];

我的问题是pathForResource返回nil。

文件stopPointsInCircleData.txt位于测试代码的目录中,并且该文件正确列出在测试目标的“构建阶段”中的“复制捆绑资源”下。

我试图通过将ofType设置为nil来放松搜索,但是它们也不起作用。

非常感谢任何帮助。

最佳答案

您的问题是,在单元测试目标中,-mainBundle并不引用测试目标捆绑包,而是引用其中注入(inject)了测试目标的可执行文件的捆绑包。对于ios测试目标,这是您的应用程序捆绑包;在Mac测试目标中,它可能是应用程序捆绑包,也可能是OCUnit运行器。

您应该在测试目标的捆绑软件中寻找资源。在测试类中,它是这样完成的:

NSBundle *myBundle = [NSBundle bundleForClass: [self class]];

关于objective-c - NSBundle pathForResource返回nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9157480/

10-11 04:09