Файлы ресурсов в подкаталоге копируются в корневой каталог приложения
Я не уверен, что это ожидалось, или это ошибка.
Я пытаюсь создать ту же структуру папок на диске, что и в XCode. Я использую следующие шаги, чтобы добавить файлы ресурсов в мой проект:
- Создайте папку
Resources
в корневой папке проекта.
- Перетащите папку
Resources
в XCode, которая создает Group
для этой папки.
- Перетащите мои файлы ресурсов из
Finder
в папку Resources
в XCode.
И теперь я вижу, что все файлы ресурсов перечислены в 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
При добавлении папки "Ресурсы" в Xcode выберите "Создать ссылки на папки" вместо "Создать группы для любых добавленных папок" в скользящем окне.
То есть замените 3 шага в своем вопросе следующими.
- Создайте каталог ресурсов в корневой директории проекта. Организуйте свою структуру каталогов в каталоге ресурсов так, как вы хотите.
- Перетащите каталог ресурсов в XCode и выберите опцию Создать папку.
Вы закончили. Xcode скопирует содержимое вашего каталога ресурсов рекурсивно в пакет.
У вас может возникнуть проблема в будущем, когда Xcode не копирует измененный файл где-нибудь в каталоге ресурсов. Чистая сборка обычно исправляет это. Кроме того, перед сборкой можно удалить файл .app. Это не приведет к восстановлению немодифицированных исходных файлов, но заставит Xcode скопировать все ресурсы заново.
![Sample Folder Reference]()