子目录中的资源文件将复制到应用程序包的根目录

时间:2012-06-10 14:35:28

标签: xcode resources directory

我不确定这是预期还是错误。 我试图在磁盘中创建与XCode相同的文件夹结构。我使用以下步骤将资源文件添加到我的项目中:

  1. 在项目的根文件夹下创建一个Resources文件夹。
  2. Resources文件夹拖到XCode,为该文件夹创建Group
  3. 将我的资源文件从Finder拖到XCode中的Resources文件夹。
  4. 现在我可以看到Build Phrases - > Copy Bundle Resources中列出了所有资源文件。

    奇怪的是,[[NSBundle mainBundle] pathForResource:@"book" ofType:@"epub"]返回了可以找到的文件路径,而[[NSBundle mainBundle] pathForResource:@"book" ofType:@"epub" inDirectory:@"Resources"]则返回(null)

    Build Results窗口中,我注意到这一行:

    CpResource MBookReader/Resources/book.epub /Users/neevek/Library/Developer/Xcode/DerivedData/workspace-fykuaikryknuhxgevcdtspkspptj/Build/Products/Debug-iphonesimulator/MBookReader.app/book.epub
    cd /Users/neevek/workspace/xcode_projects/MBookReader
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip /Users/neevek/workspace/xcode_projects/MBookReader/MBookReader/Resources/book.epub /Users/neevek/Library/Developer/Xcode/DerivedData/workspace-fykuaikryknuhxgevcdtspkspptj/Build/Products/Debug-iphonesimulator/MBookReader.app
    

    表明Resources/book.epub文件确实被复制到MBookReader.app/(应用程序包的根目录)。

    现在Resources是磁盘中的真实文件夹,为什么不复制文件夹本身?

    PS。我正在使用XCode 4.3.2。

1 个答案:

答案 0 :(得分:36)

将资源文件夹添加到Xcode时,请在滑动窗口中选择“创建文件夹引用”而不是“为任何添加的文件夹创建组”。

即,将问题中的3个步骤替换为以下步骤。

  1. 在项目的根目录下创建 Resources 目录。按照您希望的方式在 Resources 目录中组织目录结构。
  2. Resources 目录拖到XCode,然后选择创建文件夹引用选项。
  3. 你已经完成了。 Xcode会将 Resources 目录中的内容递归复制到包中。

    当Xcode没有将修改后的文件复制到 Resources 目录中的某个位置时,您可能会遇到麻烦。干净的构建通常可以解决这个问题。或者,您可以在构建之前删除.app文件。这不会导致未修改的源文件重建,但会强制Xcode重新复制所有资源。

    Sample Folder Reference