在我的mainBundle中找不到.js文件?

Nic*_*ard 10 iphone cocoa-touch nsdata nsbundle

这让我发疯,因为我无法弄清楚世界上究竟发生了什么.我一直在从主包中加载文件,xml文件,html文件等等.但是,现在我正在尝试获取javascript文件的内容,但它永远找不到它.我在用:

NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]];
    if (jsData) {
        NSLog(@"%@", jsData);
    } else {
        NSLog(@"Can't find file");
        return;
    }
Run Code Online (Sandbox Code Playgroud)

即使检查[[NSBundle mainBundle] pathForResource:@"global"ofType:@"js"]字符串也会返回null.

我的globaly.js文件位于我的Resources文件夹中,我的其他文件所在的位置使用上述方法完全正常工作.

为什么找不到我的js文件?

Chr*_*son 14

默认情况下,Xcode可能会将具有"js"扩展名的文件视为源文件,并将它们添加到其Compile Sources构建阶段而不是其Copy Bundle Resources构建阶段.

只需将"js"文件移动到Copy Bundle Resources构建阶段,它们就会被复制到应用程序的包中.他们是否在项目层次结构中名为Resources的组中是无关紧要的; 这只是一个组织工具,在Xcode中没有任何意义.这是实际完成产品组合工作的目标下的构建阶段.


Evg*_*nov 5

到目前为止,我记得Xcode不喜欢带有*.js扩展名的文件.我的意思是它没有将它添加到应用程序包中.只需将您的文件重命名为*.txt,一切都会好的.

正确的答案是:您需要将您的js文件从Compile Sources目标构建阶段移动到Copy Bundle Resources.因为Xcode认为js文件是源文件而应该编译它们然后作为资源添加.

  • 这不是Xcode"不喜欢"某些文件类型的问题,开发人员不需要将它们重命名为具有"txt"扩展名. (6认同)
  • 将js移动到Copy Bundle Resources为我工作.谢谢 (2认同)