【问题标题】:Can't find .js file in my mainBundle?在我的 mainBundle 中找不到 .js 文件?
【发布时间】:2011-05-31 07:31:13
【问题描述】:

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

【问题讨论】:

  • 如果脚本是“activity.js”,你为什么要找“global.js”?
  • 文件名是global.js还是activity.js?
  • 您是否尝试加载名为 global.js 或 activity.js 的文件?
  • 对不起,我在这篇文章中输入错误。

标签: iphone cocoa-touch nsdata nsbundle


【解决方案1】:

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

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

【讨论】:

  • Moving js to Copy Bundle Resources 对我有用。你能解释一下为什么复制有效吗?
【解决方案2】:

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

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

【讨论】:

  • 你是对的,它显然讨厌 .js 文件。将其设为 .txt 文件就可以了,不知道为什么我没有想到这一点。
  • 这不是 Xcode “不喜欢”某些文件类型的问题,开发人员不需要将它们重命名为具有“txt”扩展名。
  • Moving js to Copy Bundle Resources 对我有用。谢谢
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    我遇到了同样的问题。

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

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

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

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-14
        相关资源
        最近更新 更多