2010-08-28 25 views
30

Estoy tratando de entender la organización de archivos de Xcode, o la falta de eso. Puedo hacer todo lo que quiero en el proyecto y se ve muy bien con todas las carpetas y estructuras "falsas". Voy a ver el sistema de archivos y auge GRANDE desastre. Intenté importar archivos con la opción Create Folder Reference for any added folder marcada y eso funciona, un poco. Obtengo la estructura que quiero tanto en Xcode como en el sistema de archivos.¿Cómo debo organizar mis archivos de proyecto de Xcode?

Problemas: Cuando agrego un archivo a una carpeta en el sistema de archivos que es una referencia de carpeta en Xcode, no está en Xcode cuando voy a buscar, ni siquiera después de volver a cargar el proyecto. Los archivos/subcarpetas en una referencia de carpeta no se pueden mover en Xcode. Cuando los muevo en el sistema de archivos obtengo enlaces rojos (¿no puedo encontrar el archivo?) En Xcode.

¿Cómo puedo mantener un proyecto organizado y filesystem? ¿Cómo puedo configurar un proyecto para reconocer una carpeta y mostrar sus archivos y subcarpetas (actuales y actualizados) en mi proyecto?

Otro problema con el que parece toparme, si utilizo una referencia de carpeta y cambio un archivo, el archivo no se actualiza en mi aplicación a menos que haga una reconstrucción completa & limpia. Si no utilizo una referencia de carpeta, todos mis archivos se vuelcan en la carpeta de recursos del paquete de aplicaciones, no en la bonita estructura que tengo en mi proyecto.

¿Debería importarme? ¿Debo usar las carpetas falsas y dejar que todo vaya a todas partes y no me importa? Mi paquete de aplicaciones será un desastre, el sistema de archivos será un desastre, pero todo funcionará ... ¿Lo esperaría?

Editar:

Mi mayor razón para querer un sistema de archivos organizada es que los archivos de recursos (imágenes, sonidos, otros Datafiles, etc.) no se editan en Xcode. Tengo que acceder a ellos en aplicaciones de terceros a través del sistema de archivos. Si es un desastre las cosas son más difíciles de encontrar y mantener en las otras aplicaciones de terceros.

También lo que sucede si quiero una estructura como las siguientes:

  • Imágenes/Fondos/Name.png
  • Imágenes/Iconos/Name.png
  • Imágenes/Títulos/Name.png

¿Debo usar nombres largos de archivo en lugar de carpetas para organizar?

  • Images_Backgrounds_Name.png
  • Images_Icons_Name.png
  • Images_Titles_Name.png
+0

Una razón por la que la organización del sistema de archivos es importante es porque el sistema de control de la versión del código fuente sincroniza el sistema de archivos. – Anand

+0

@Anand - Cierto es que Xcode tiene una compilación de git así que también se abstrae. – Justin808

Respuesta

6

me debe importar en absoluto? ¿Debería usar las carpetas falsas y dejar que todo vaya a todos lados y no me importe? Mi paquete de aplicación será un desastre , el sistema de archivos será un desastre, pero todo va a funcionar ... ¿Lo esperaría ?

IMO no ... :) básicamente. El punto es que XCode ha sido diseñado para brindarle la mejor experiencia de programación.Si Apple quisiera que organizaras físicamente todos tus archivos y carpetas dentro del sistema de archivos real, lo habrían hecho de esa manera.

Realmente no entiendo por qué querría organizar todos los archivos y carpetas de esta manera? No hace ninguna diferencia en la ejecución de la aplicación y las carpetas (grupos) "falsos" en XCode proporcionan de manera adecuada la ayuda visual necesaria para usted (y otros) para navegar a través de sus clases y otros recursos. Organizarlo correctamente en su sistema de archivos (como ha encontrado) seguramente solo hace las cosas más difíciles?

+2

Consulte mi edición anterior para mi razonamiento. Desafortunadamente, estoy viendo si quiero usar XCode, entonces solo tengo que decirlo y tratar con la organización del sistema de archivos FUBARed. Si quiero desarrollar mac, necesito usar XCode así que me ocuparé, supongo ... va en contra de mis 20 años de programación para dejar una carpeta de proyectos en un lío masivo. – Justin808

+0

lol ... bueno, son un cambio (como Bob Dylan dijo una vez).Mi experiencia es el desarrollo web donde todas tus imágenes están en la carpeta de imágenes y tienes una psd separada y la guardas en la carpeta de imágenes cuando quieres usar una imagen, así que esto es lo que sugiero que hagas: tener 'Desarrollo/MyAppProject' que tiene '/ MyAppProject' y'/MyAppProjectResources' en él. En MyAppProjectResources tiene su sistema de archivos estructurado de archivos PSD y XML y todo lo demás, y cuando se trata de utilizarlos en su aplicación de acuerdo, puede guardarlos en la carpeta '/ MyAppProject' o arrastrar y soltar los archivos resultantes. –

+3

El motivo por el que desea que sus archivos estén organizados es porque cualquier herramienta externa (por ejemplo, Git o Fireworks) usa el sistema de archivos. –

6

OK, así que aquí es cómo funciona:

Xcode no sabe de ningún archivo hasta que usted le dice acerca de ellos. Es decir, incluso si agrega un archivo manualmente en el buscador (generalmente una mala idea) a una carpeta que contiene archivos en un proyecto de Xcode, no los conoce hasta que "agregue el archivo existente al proyecto".

La mejor práctica (imo) para agregar un archivo existente (o grupo de archivos) a un proyecto (digamos, algún código que acaba de descargar) es elegir "agregar archivos existentes" y luego "copiar elementos a la carpeta del grupo de destino" (si es necesario) "en el siguiente cuadro de diálogo, si desea que su proyecto tenga una copia de los archivos en cuestión, en lugar de simplemente una referencia a ellos (hay ventajas y desventajas de ambos).

No se preocupe demasiado por el nombre de las carpetas en Xcode, o donde ponga cosas, pero trate de mantener un estándar que tenga sentido en su entorno. Por ejemplo, siempre pongo las clases que escribo en "Clases" y tengo carpetas separadas para cualquier código de biblioteca que descargué para usar en el proyecto. Siempre coloco imágenes/iconos/audio, etc. en "Recursos".

En resumen, si te gusta lo que está en la carpeta del proyecto que sea aproximadamente el mismo que lo que está en su proyecto, siempre agregar archivos existentes por la elección de los "elementos de copia a la carpeta del grupo de destino"

La flexibilidad en XCode es intencional. Depende de usted decidir cómo le gusta organizar las cosas.

+5

hmm ... lo que usted llama flexibilidad en XCode lo veo como un gran error importante. ¿Por qué querría tener las cosas organizadas en el proyecto de una manera y ser, IMO, completamente FUBER en el sistema de archivos? ** Copiar elementos a la carpeta del grupo de destino ** no hace nada para mantener los archivos organizados dentro de la carpeta de proyectos en el sistema de archivos, solo copia un archivo que se agrega desde fuera del proyecto al gran desorden de la carpeta del proyecto. – Justin808

+0

Recuerde presentar un informe de error al respecto. No cambiará a menos que se queje a las personas adecuadas. –

1

Sería fantástico si Xcode pudiera mantener sincronizados a sí mismo y al sistema de archivos. Lamentablemente no es así. Una razón para quererlo es que la jerarquía en su SCCS coincida con la de Xcode.

Me limito a mantener las cosas organizadas en Xcode y dejar el sistema de archivos separado en poco más que "Clases" y "Recursos".

16

También deseo que Xcode se mantenga automáticamente sincronizado con el sistema de archivos.

Tanto, que pasé una hora haciéndolo manualmente para un proyecto llamado acani-iphone on GitHub. Básicamente, acabo de mover algunos de los archivos con Finder, creando nuevas carpetas a mi antojo. Luego, cambié de nuevo a Xcode y vi que los archivos que acababa de mover ahora eran rojos (porque Xcode estaba pensando que estaban donde los moví y no los pude encontrar).

ACTUALIZACIÓN: Acabo de descubrir que podría haber hecho clic en el grupo o archivo rojo, presioné CMD + i (Obtener información en el menú contextual, que puede abrir haciendo clic derecho en el archivo rojo o grupo) y en la pestaña General, hizo clic en Elegir, luego encontró el lugar donde moví el archivo en el sistema de archivos. Pero no hice eso, esto es lo que hice en su lugar, que también funciona:

Luego, simplemente destaqué todos los archivos rojos en Xcode y presioné command + delete para eliminar las referencias rotas (rojas). Luego, hice clic con el botón derecho en el Grupo al que quería agregar los archivos (generalmente el mismo grupo), y hice clic en Add>Existing Files....Luego, encontré los mismos archivos en el nuevo lugar en el sistema de archivos. Guardé "Copiar elementos en la carpeta del grupo de destino (si es necesario)" sin marcar, marqué el botón de opción "Crear recursivamente grupos para cualquier carpeta agregada" y comprobé agregar al objetivo acani si los archivos que estaba agregando estaban siendo utilizados para construir el Aplicación para iPhone acani.

Hice lo anterior como un directorio de archivos a la vez. Algunas veces fui más agresivo y agregué varios directorios a la vez, ya que casi siempre selecciono el botón de opción "Crear recursivamente grupos para cualquier carpeta agregada".

descubrí que los archivos acani_Prefix.pch y acani-Info.plist tuvieron que permanecer en el directorio de sistema de archivos raíz (aunque puede haber ajustes que se pueden configurar para permitir que estos archivos sean en otros lugares, como creo que se puede añadir una línea a acani-Info.plist por lo que puede mover/renombrar acani_Prefix.pch, pero estoy bien con ellos en el directorio raíz en el sistema de archivos.

Eso fue molesto de hacer, y tal vez ni siquiera vale la pena, tal vez la procrastinación, pero en el futuro, antes agregando archivos existentes a Xcode, primero me aseguraré de que estén en el lugar donde quiero que estén en el sistema de archivos.

0

Lo que d o es crear un grupo para representar cada carpeta y luego, antes de agregarle archivos, en el panel derecho, primera pestaña, inmediatamente debajo de "Ruta", hay un icono que le permite elegir la carpeta. En ese cuadro de diálogo de carpeta, creo una carpeta que coincide con el grupo y lo elijo.

En xcode3, esto dio como resultado diálogos nuevos y agregar archivos comenzando en esta ruta. Eso hizo que valga la pena el esfuerzo. Xcode4, sin embargo, no respeta esta configuración. Por lo tanto, es cuestionable si hay algún valor real en él. También deseo que XCOde sea compatible con una mejor organización del sistema de archivos.

Teniendo en cuenta que los nombres de los archivos deben ser únicos dentro de un proyecto, independientemente de los grupos y carpetas, existe una justificación para aceptar la estructura de carpetas planas por defecto y usar grupos para conveniencia de IDE. Es difícil venir de otras plataformas donde esto está mal visto.

+0

Aunque puedo aceptar que este enfoque parece resolver el problema para un solo desarrollador, creo que resultaría en una base de código menos organizada entre un grupo de desarrolladores. Cuando se trabaja con otras personas, es importante tener un estándar. En mi experiencia, el mejor estándar es el que implica el menor número de pasos. – jacobsimeon

0

Siento que usted y personalmente no pueden preocuparse por la estructura real y simplemente confiar en los espacios de trabajo.

lo que sería realmente genial es una herramienta que revisará la estructura del espacio de trabajo y reorganizará el sistema de archivos en consecuencia, cuidando cualquier renombrado de carpetas, etc. Esta sería una solución clásica y en mi humilde opinión debería implementarse como una opción, ya que reorganizamos nuestro proyecto a medida que avanzamos.

algunos problemas podrían ser el control de fuente, aunque xcode4 funciona tanto con git como con SVN.

2

Use Synx.

Reordena sus archivos en el disco para que coincidan con sus grupos de Xcode. Intento ejecutarlo antes de confirmar cualquier código que cambie los grupos de Xcode, y mantiene el proyecto ordenado y ordenado.

Cuestiones relacionadas