2012-06-10 19 views
18

No estoy seguro de si esto se espera o es un error. Estoy tratando de crear la misma estructura de carpetas en el disco que en XCode. Uso los siguientes pasos para agregar archivos de recursos a mi proyecto:Los archivos de recursos en el subdirectorio se copian en el directorio raíz del paquete de la aplicación

  1. Cree una carpeta Resources debajo de la carpeta raíz del proyecto.
  2. Arrastre la carpeta Resources a XCode, que crea un Group para la carpeta.
  3. Arrastra mis archivos de recursos de Finder a la carpeta Resources en XCode.

Y ahora puedo ver todos los archivos de recursos que figuran en Build Phrases ->Copy Bundle Resources.

Lo raro es que [[NSBundle mainBundle] pathForResource:@"book" ofType:@"epub"] devuelve una ruta de archivo que se puede ubicar, mientras que [[NSBundle mainBundle] pathForResource:@"book" ofType:@"epub" inDirectory:@"Resources"] devuelve (null).

Desde la ventana Build Results, noto esta línea:

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 

lo que demuestra que Resources/book.epub archivo se copia en efecto, MBookReader.app/ (el directorio raíz del paquete de la aplicación).

Ahora Resources es una carpeta real en el disco, ¿por qué la carpeta no se copia?

PS. Estoy usando XCode 4.3.2.

+0

me encontré con este mismo problema al poner los archivos de Ayuda "Libro" en mi aplicación; necesitan estar en un subdirectorio en Recursos.¡La respuesta de Android también funcionó para mí! – Marc

Respuesta

31

Al agregar su carpeta de Recursos a Xcode, seleccione "Crear referencias de carpeta" en lugar de "Crear grupos para cualquier carpeta agregada" en la ventana deslizante.

Es decir, reemplace los 3 pasos en su pregunta con los siguientes.

  1. Crear un directorio de recursos en el directorio raíz del proyecto. Organice la estructura de su directorio dentro del directorio Resources de la forma que desee.
  2. Arrastre el directorio Recursos a XCode y seleccione la opción Crear carpeta de referencias.

Ya ha terminado. Xcode copiará los contenidos de su directorio Resources recursivamente en el paquete.

Es posible que tenga problemas más adelante en el camino cuando Xcode no copia un archivo modificado en algún lugar dentro del directorio Recursos. Una compilación limpia normalmente soluciona esto. Alternativamente, puede eliminar el archivo .app antes de compilar. Esto no causará la recomposición de los archivos fuente no modificados, pero obligará a Xcode a copiar todos los recursos de nuevo.

Sample Folder Reference

+1

No importa si se trata de un directorio real o simplemente de una referencia, parece que todos los archivos de recursos se copiarán en el directorio raíz del paquete de aplicaciones independientemente del directorio en el que residan cuando se genere el proyecto. – neevek

+0

@Neevek He actualizado la respuesta. –

+0

Gracias @android, lo probaré esta noche y te daré tu opinión. – neevek

Cuestiones relacionadas