objective-c xcode xcode4 file-organization

objective c - Flujo de trabajo para crear grupos Xcode como carpetas del sistema de archivos



objective-c xcode4 (3)

Me gusta organizar mis clases en grupos, en el panel de navegación del proyecto Xcode 4. También uso versiones de GIT a través del terminal, que funciona mejor para mí que la integración de Xcode 4. Para mí tiene más sentido cuando los grupos que creo en Xcode corresponden a las carpetas reales en mi sistema de archivos.

Sin embargo, a Xcode parece no importarle dónde está un archivo (por ejemplo, archivo Objective-C .h / .m) en el sistema de archivos, y cada vez que agrega un grupo ( Option+Command+N ) es puramente cosmético, para cualquier archivo que poner allí compartirá la misma ubicación en su disco duro que el resto.

Lo extraño es que si primero creas una carpeta en tu disco duro y luego la arrastras hacia Xcode, has creado un grupo con su propia ubicación en tu sistema de archivos. Cada archivo que cree allí se creará en la carpeta del disco. Me encanta, pero me encantaría aún más si Xcode hiciera eso por mí en Option+Command+N El flujo de trabajo de cambiar a Finder para cada grupo que desea crear y luego arrastrarlo de nuevo al lugar correcto en el navegador de su proyecto es simplemente una tontería.

Se siente como algo que un entorno solucionaría, ¡pero no puedo encontrarlo! ¿Hay una mejor manera?

Actualización: al arrastrar una carpeta a Xcode, obtendrá una ventana de diálogo donde puede elegir "Referencia de carpeta". Eso parece prometedor, sin embargo, mi Xcode 4 no acepta los archivos allí como clases y me sigue diciendo que no puede encontrar ningún archivo. Tal vez la respuesta yace aquí en alguna parte, pero todavía no puedo encontrarla.

Otra actualización: he cambiado el entorno de mi editor principal de Xcode a AppCode. Este último soporta la creación de carpetas para respaldar los grupos de proyectos, mientras mantiene una compatibilidad del 100% con Xcode. Esos tipos de AppCode saben lo que están haciendo.


ACTUALIZAR

A continuación se describe Xcode 9 y posterior.

A partir de Xcode 9, Xcode puede crear automáticamente una carpeta del sistema de archivos cuando crea un grupo en su proyecto.

Cuando hace clic derecho (o control-clic) en el navegador del proyecto, el menú contextual incluirá un elemento de menú "Nuevo grupo" y un elemento de menú "Nuevo grupo con carpeta" o un elemento de menú "Nuevo grupo sin carpeta".

  • Si Xcode ofrece "Nuevo grupo" y "Nuevo grupo con carpeta", entonces "Nuevo grupo" crea un grupo sin una carpeta.

  • Si Xcode ofrece "Nuevo grupo" y "Nuevo grupo sin carpeta", entonces "Nuevo grupo" crea un grupo con una carpeta.

En otras palabras, "Nuevo grupo" siempre hace lo contrario del otro elemento de menú (explícito), con respecto a la creación de carpetas.

Si cambia el nombre de un grupo, y ese grupo tiene una carpeta correspondiente con el mismo nombre, Xcode 9 también cambia el nombre de la carpeta.

En Xcode 9, si arrastra un archivo de un grupo a otro y los grupos tienen carpetas diferentes, Xcode 9 mueve el archivo a la carpeta del nuevo grupo, independientemente de si la carpeta del nuevo grupo tiene el mismo nombre que el grupo.

Si no desea este comportamiento en Xcode 9, puede establecer una configuración no documentada desde la línea de comando:

defaults write com.apple.dt.Xcode IDEDisableStructureEditingCoordinator -bool YES

Imposible deducir detalles sobre "Nuevo grupo con carpeta" y "Nuevo grupo sin carpeta"

No es del todo obvio cómo Xcode decide si mostrar "Nuevo grupo" y "Nuevo grupo con carpeta", o "Nuevo grupo" y "Nuevo grupo sin carpeta". Un ingeniero de Apple en la WWDC 2018 (creo que su nombre era Paul) miró el código fuente de Xcode y me lo explicó:

  • Xcode averigua en qué grupo hizo clic (o, si no hizo clic en un grupo, se da cuenta de qué grupo contiene el elemento en el que hizo clic).
  • Xcode examina los subgrupos (y carpetas vinculadas) que son hijos del grupo cliqueado.
  • Si la mayoría de los subgrupos tienen sus propias carpetas, entonces Xcode asume que desea que el nuevo grupo también tenga su propia carpeta. Entonces, Xcode muestra "Nuevo grupo" (que creará una carpeta) y "Nuevo grupo sin carpeta".
  • Si la mayoría de los subgrupos no tienen sus propias carpetas, entonces Xcode asume que desea que el nuevo grupo tampoco tenga su propia carpeta. Entonces, Xcode muestra "Nuevo grupo" (que no creará una carpeta) y "Nuevo grupo con carpeta".
  • No sé cómo Xcode rompe el empate si exactamente la mitad de los subgrupos tienen sus propias carpetas, y no tengo ganas de probarlo en este momento ...
  • Si el grupo cliqueado no tiene subgrupos, Xcode decide qué mostrar en función de si el grupo cliqueado tiene su propia carpeta.

Básicamente, Xcode intenta adivinar si su nuevo grupo debería tener su propia carpeta en función de si sus futuros hermanos tienen sus propias carpetas.

ORIGINAL

Puede crear un nuevo grupo, con su propia carpeta, directamente en Xcode, pero no es del todo obvio.

En lugar de elegir ''Nuevo grupo'', elija ''Agregar archivos a'' <Proyecto> "''. Luego, en el cuadro de diálogo del selector de archivos, haga clic en el botón Nueva carpeta o presione Command-Shift-N y escriba el nombre de la nueva carpeta / grupo. Luego, asegúrese de seleccionar "Crear grupos para cualquier carpeta agregada" y haga clic en Agregar o presione Regresar.

Esto no le ahorrará mucho si necesita mover archivos existentes al nuevo grupo, porque Xcode aún no lo hará.

Pero guarda unos pocos pasos si está creando un nuevo grupo para contener archivos nuevos.


Eche un vistazo a la respuesta de andyvn22 here

Parafrasear:

  • Xcode 3 : cada vez que crees un grupo en Xcode, obtén información de inmediato y observa la configuración de "Ruta:" justo debajo de su nombre. Haga clic en "Elegir ..." y configúrelo en una nueva carpeta con el mismo nombre.
  • Xcode 4 : cada vez que cree un grupo en Xcode, selecciónelo de inmediato y abra la barra lateral derecha. Observe la configuración "Ruta de acceso" justo debajo de su nombre. Haga clic en el icono al lado de "Ninguno" (¿qué es eso, un archivo en una ventana?) Y configúrelo en una nueva carpeta con el mismo nombre.

Luego, deberá mover los archivos existentes en el disco a la nueva carpeta de forma manual.

Acabo de probar esto en mi proyecto Xcode4, funciona como un encanto.


Para aquellos que son demasiado perezosos para sincronizar las carpetas, hay una buena herramienta en GitHub .

Synx es una herramienta de línea de comandos que reorganiza su carpeta de proyectos Xcode para que coincida con sus grupos de Xcode.

Espero que esto ayude a alguien