我不确定这是预期还是错误。 我试图在磁盘中创建与XCode相同的文件夹结构。我使用以下步骤将资源文件添加到我的项目中:
Resources
文件夹。Resources
文件夹拖到XCode,为该文件夹创建Group
。Finder
拖到XCode中的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。
答案 0 :(得分:36)
将资源文件夹添加到Xcode时,请在滑动窗口中选择“创建文件夹引用”而不是“为任何添加的文件夹创建组”。
即,将问题中的3个步骤替换为以下步骤。
你已经完成了。 Xcode会将 Resources 目录中的内容递归复制到包中。
当Xcode没有将修改后的文件复制到 Resources 目录中的某个位置时,您可能会遇到麻烦。干净的构建通常可以解决这个问题。或者,您可以在构建之前删除.app文件。这不会导致未修改的源文件重建,但会强制Xcode重新复制所有资源。