Подтвердить что ты не робот

Файлы ресурсов в подкаталоге копируются в корневой каталог приложения

Я не уверен, что это ожидалось, или это ошибка. Я пытаюсь создать ту же структуру папок на диске, что и в XCode. Я использую следующие шаги, чтобы добавить файлы ресурсов в мой проект:

  • Создайте папку Resources в корневой папке проекта.
  • Перетащите папку Resources в XCode, которая создает Group для этой папки.
  • Перетащите мои файлы ресурсов из Finder в папку Resources в XCode.

И теперь я вижу, что все файлы ресурсов перечислены в Build PhrasesCopy 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.

4b9b3361

Ответ 1

При добавлении папки "Ресурсы" в Xcode выберите "Создать ссылки на папки" вместо "Создать группы для любых добавленных папок" в скользящем окне.

То есть замените 3 шага в своем вопросе следующими.

  • Создайте каталог ресурсов в корневой директории проекта. Организуйте свою структуру каталогов в каталоге ресурсов так, как вы хотите.
  • Перетащите каталог ресурсов в XCode и выберите опцию Создать папку.

Вы закончили. Xcode скопирует содержимое вашего каталога ресурсов рекурсивно в пакет.

У вас может возникнуть проблема в будущем, когда Xcode не копирует измененный файл где-нибудь в каталоге ресурсов. Чистая сборка обычно исправляет это. Кроме того, перед сборкой можно удалить файл .app. Это не приведет к восстановлению немодифицированных исходных файлов, но заставит Xcode скопировать все ресурсы заново.

Sample Folder Reference