10

这让我发疯,因为我无法弄清楚世界上发生了什么。我一直从您的主包中加载文件,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文件?

4

5 回答 5

14

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

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

于 2010-12-28T02:46:56.600 回答
5

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

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

于 2010-12-27T20:57:29.917 回答
2

并不是 Xcode 不喜欢 .js 文件。它确实考虑了它们,否则我们不会在 webview 中使用 .js 文件来执行 javascriptexecution。

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

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

于 2010-12-28T03:58:36.793 回答
1

我遇到了同样的问题。

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

  1. 将 js 文件定位到构建设置中的“编译源”部分并将其从那里删除。

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

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

于 2012-11-18T08:50:52.497 回答
0

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

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

于 2010-12-27T20:50:00.160 回答