Почему в Xcode могут быть созданы группы, но не настоящие папки?

При выполнении iOS-программирования интересно, что в Xcode (4.3.2) мы можем создавать группы, такие как групповой вызов Images, и добавлять к нему файлы (либо в виде ссылки, либо выбрать "Копировать элементы в групповой папки" ). Таким образом, он выглядит как настоящая папка в навигаторе и даже упоминает "копировать в... группу папку", но на самом деле нет папки. Все добавленные файлы находятся в том же месте, что и файлы .m и .h.

Зачем нам нужны группы, но не настоящая папка? Есть ли преимущество групп в использовании папки?

Ответ 1

Рекомендуемый способ организации файлов осуществляется через группы, поскольку он более гибкий, чем создание каталогов, и позволяет создавать сложные иерархии файлов, сохраняя при этом совершенно иную иерархию файлов в файловой системе. Это просто инструмент организации. Тем не менее, можно превратить группы в ссылки на папки или создать их вначале как ссылки на папки.

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

Если вы хотите связать группу с папкой, нажмите на группу в дереве файлов проекта и нажмите команду + option + 1. Ниже выпадающего списка, который будет говорить что-то вроде "Путь: относительно группы" справа, есть маленький белый квадрат с серой рамкой вокруг него своего рода значок рядом со словом "none". Нажав на это, а затем выбрав/создав папку, она привяжет группу к папке.

folder reference

Кроме того, когда вы перетаскиваете папку в Xcode, она спросит вас, хотите ли вы, чтобы она была ссылкой на группу или папку:

adding a folder reference

Ответ 2

Это мое домашнее животное.

Я рекомендую, создав папку в вашей файловой системе, где у вас есть файлы проекта, затем перетащите эту папку в Xcode, где вы хотите группу. Он будет действовать как любая другая группа, но теперь будет привязан к папке в файловой системе. Добавление файлов в эту группу в Xcode теперь добавляет их в папку в файловой системе.

Более чистый способ работы и помогает при поиске файлов в больших проектах. Удерживает git очиститель.

Обновление для Xcode 9:

Когда у вас есть группы в Xcode, соответствующие структуре каталогов на диске, перемещение файла из одной группы в другую в Xcode теперь приведет к правильному перемещению файла на диске, чтобы он соответствовал.

Ответ 3

Существует инструмент командной строки - "synx"  доступные в github, которые делают именно то, что вам нужно.

Он реорганизует папку проекта Xcode в finder для соответствия группам Xcode в проекте.

Вы можете найти его здесь: https://github.com/venmo/synx