【问题标题】:URLForResource returns nilURLForResource 返回 nil
【发布时间】:2015-01-17 11:41:44
【问题描述】:

我正在学习如何使用 xcode 以及如何为 Mac 编写应用程序。

所以,我有一个简单的屏幕保护程序,可以加载一个工作正常的外部文件。我决定最好将 html 源代码嵌入到应用程序中以减少外部依赖。

我将 HTML 文件拖到资源文件夹,它在顶层,没有子文件夹或任何东西。

我确保添加到目标中包含我的应用程序,同时选择“创建文件夹引用”和“如果需要则复制文件”。我使用以下内容获取文件的 url,但它返回 nil

    NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"embedded" withExtension:@"html"];


 System Preferences[10185]: fileUrl returned (null) 

我已经阅读了所有其他类似问题的 SO 问题,但似乎没有一个修复程序适用。我已经检查过了。

如果我显示最终构建的包内容,embedded.html 就在其中。我是否遗漏了一些非常明显的东西?

编辑添加

在构建阶段,它列在 Copy Bundle Resources 中

xcode 版本为 6.1.1

【问题讨论】:

  • 您是否在构建阶段检查过该文件位于Copy Bundle Resources 下?
  • 是的,它可以被复制。我刚刚将图片添加到问题中。
  • 这是命令行工具吗?如果是这样,它没有 App Bundle。您需要创建一个 Cocoa 应用程序。
  • 不,不是命令行工具,是屏保

标签: xcode


【解决方案1】:

经过大量的挖掘和一点点运气,我发现了

    NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"embedded" withExtension:@"html"];

不正确,我应该使用

    NSURL *fileUrl = [[NSBundle bundleForClass:[self class]] URLForResource:@"embedded" withExtension:@"html"];

相反。

NSBundle bundleForClass:[self class] 而不是 NSBundle mainBundle 将提供对屏幕保护程序包的访问权限。

可能很明显,但前提是你知道;)

Apple Developer NSBundle Class Reference

【讨论】:

  • 感谢您的回答。这绝对是没有预料到的。有点奇怪,从一开始就起作用的东西突然改变了。
  • 哇,经过 5 次无数次搜索、3 次从头到脚的操作、4 次吸烟休息、2 次小睡“睡在上面”和 6 个果冻甜甜圈,我终于找到了这个解决方案。嗯,你会的想一想——拥有世界一半的流动性,Apple 会编写一些体面的、统一的、集中的、非碎片化的、精确的、非 TL;DR 的文件。(那个 mac 电源按钮又在哪里?)跨度>
【解决方案2】:

我遇到了类似的问题。我的答案是检查对象身份的目标成员身份。

【讨论】:

    【解决方案3】:

    退出并重新启动 Xcode 为我解决了这个问题。

    【讨论】:

      【解决方案4】:

      使用它解决了我的问题[myBundle URLForResource: withExtension: subdirectory: ]

      对 NSBundle URLForResource 的子目录查询需要指定子目录。否则返回 nil。

      今天一小时搞定:'(

      【讨论】:

        【解决方案5】:

        我在 MAC 应用程序中遇到了同样的问题。几个小时后,我找到了一个简单的方法来修复它。

        1、确保“构建阶段”下有一个名为“复制文件”的阶段。如果没有,请添加一个。

        2,将您的资源添加到阶段。

        3、重建你的项目,你可以在~/Library/Developer/Xcode/DerivedData//Build/Products/Debug/找到你的资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-18
          • 2019-06-20
          • 2017-12-16
          • 2014-09-27
          • 2017-06-11
          相关资源
          最近更新 更多