24

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

  1. Resources在项目的根文件夹下创建一个文件夹。
  2. Resources文件夹拖到 XCode,它会Group为该文件夹创建一个。
  3. 将我的资源文件拖到 XCodeFinder中的文件夹中。Resources

现在我可以看到所有资源文件都列在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。

4

1 回答 1

40

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

也就是说,将问题中的 3 个步骤替换为以下步骤。

  1. 在项目的根目录下创建一个Resources目录。按照您希望的方式在Resources目录中组织您的目录结构。
  2. Resources目录拖到 XCode 并选择Create folder references选项。

你完成了。Xcode 将递归地将资源目录的内容复制到包中。

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

示例文件夹参考

于 2012-09-12T13:07:12.930 回答