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

时间:2010-12-27 20:43:42

标签: 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;
    }

即使检查[[NSBundle mainBundle] pathForResource:@“global”ofType:@“js”]字符串,也会返回null。

我的globaly.js文件位于我的Resources文件夹中,我的其他文件位置的确切位置使用上述方法完全正常。

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

5 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

并不是Xcode不喜欢.js文件。它确实考虑了其他我们在webview中没有使用javascriptexecution的.js文件。

只是我们需要在目标下的Copy Bundle资源构建阶段添加.js文件。只需将.js文件拖到复制包资源构建阶段即可。因此,Xcode将考虑此文件,因为它现在处于bulid阶段捆绑中。 我想如果我们不执行上述步骤,我们会收到有关构建代码的警告。我并不完全记得警告,但它只是说Xcode无法识别.js文件。

将文件添加到构建阶段后,即可使用 NSData * jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@“global”ofType:@“js”]];

答案 3 :(得分:1)

我遇到了同样的问题。

我执行了以下步骤来解决此问题:

  1. 在构建设置中将js文件定位到“编译源代码”部分,然后从中删除它。

  2. 找到“复制捆绑资源”部分并在那里添加js文件。

  3. 以上两个步骤解决了我的问题..

答案 4 :(得分:0)

有时xCode没有意识到文件在您的项目中,并且没有正确地捆绑所有内容。尝试删除.js文件并重新添加。

另外,您似乎提到了两个不同的文件名,activity.js和global.js