Рабочий процесс для создания групп Xcode как папок файловой системы - PullRequest
61 голосов
/ 19 июня 2011

Мне нравится организовывать свои классы в группы в панели навигатора проекта Xcode 4. Я также использую GIT-контроль версий через терминал, который работает для меня лучше, чем интеграция с Xcode 4. Для меня наиболее логично, когда группы, которые я создаю в XCode, соответствуют реальным папкам в моей файловой системе.

Однако Xcode, похоже, не заботится о том, где находится файл (например, файл Objective-C .h / .m) в файловой системе, и каждый раз, когда вы добавляете группу (Option+Command+N), это чисто косметически, для любых файлов. если вы вставите туда, то будет находиться в том же месте на вашем жестком диске, что и остальные.

Странная вещь в том, что если вы сначала создаете папку на жестком диске, а затем перетаскиваете ее в Xcode, вы создали группу с собственным расположением в вашей файловой системе. Каждый созданный вами файл будет создан в папке на диске. Мне это нравится, но я бы хотел еще больше, если бы Xcode сделал это для меня на Option+Command+N. Рабочий процесс переключения в Finder для каждой группы, которую вы хотите создать, а затем перетаскивания ее обратно в нужное место в навигаторе проекта, просто глуп.

Такое чувство, что что-то, что установит установка, но я не могу найти это! Есть ли лучший способ?

Обновление: При перетаскивании папки в Xcode вы получите диалоговое окно, в котором вы можете выбрать «Ссылка на папку». Это выглядит многообещающе, однако мой Xcode 4 не принимает файлы там как классы и постоянно говорит мне, что не может найти никаких файлов. Может быть, ответ лежит где-то здесь, но я до сих пор не могу его найти.

Еще одно обновление: Я изменил свою основную среду редактора с Xcode на AppCode. Последний поддерживает создание папок для поддержки групп проектов, сохраняя при этом 100% совместимость с XCode. Эти парни из AppCode точно знают, что делают.

Ответы [ 3 ]

124 голосов
/ 25 июня 2013

UPDATE

Ниже описан Xcode 9 и более поздние версии.

Начиная с Xcode 9, Xcode может автоматически создавать папку файловой системы при создании группы в вашем проекте.

Когда вы щелкаете правой кнопкой мыши (или управляете щелчком мыши) в навигаторе проекта, контекстное меню будет включать в себя пункт меню «Новая группа» и либо элемент меню «Новая группа с папкой» или пункт меню «Новая группа без папки».

  • Если Xcode предлагает «Новая группа» и «Новая группа с папкой», то «Новая группа» создает группу без папки.

  • Если Xcode предлагает «Новая группа» и «Новая группа без папки», то «Новая группа» создает группу с папкой.

Другими словами, «Новая группа» всегда делает противоположность другому (явному) пункту меню в отношении создания папки.

Если вы переименуете группу, и у этой группы есть соответствующая папка с тем же именем, Xcode 9 также переименует папку.

В Xcode 9, если вы перетаскиваете файл из одной группы в другую, и группы имеют разные папки, Xcode 9 перемещает файл в папку новой группы, независимо от того, имеет ли папка новой группы то же имя, что и группа .

Если вы не не хотите такое поведение в Xcode 9, вы можете установить недокументированный параметр из командной строки:

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

Невозможно вывести сведения о «Новой группе с папкой» и «Новой группе без папки»

Не совсем очевидно, как Xcode решает, показывать ли «Новая группа» и «Новая группа с папкой», или «Новая группа» и «Новая группа без папки». Инженер Apple на WWDC 2018 (кажется, его звали Пол) посмотрел исходный код Xcode и объяснил мне:

  • Xcode выясняет, на какую группу вы щелкнули (или, если вы не щелкнули по группе, он выяснит, в какой группе содержится элемент, на который вы щелкнули).
  • Xcode просматривает подгруппы (и связанные папки), которые являются дочерними элементами группы, по которой щелкнули.
  • Если у большинства подгрупп есть свои собственные папки, то Xcode предполагает, что вы хотите, чтобы у новой группы также была своя собственная папка. Так Xcode показывает «Новая группа» (которая создаст папку) и «Новая группа без папки».
  • Если большинство подгрупп не имеют свои собственные папки, то XCode предполагает, что вы хотите, чтобы новая группа также не имела свою собственную папку. Так Xcode показывает «Новая группа» (которая не создаст папку) и «Новая группа с папкой».
  • Я не знаю, как XCode разорвет связь, если ровно половина подгрупп имеет свои собственные папки, и мне не хочется тестировать это прямо сейчас ...
  • Если у выбранной группы нет подгрупп, Xcode решает, что показать, в зависимости от того, есть ли у выбранной группы собственная папка.

По сути, Xcode пытается угадать, должна ли ваша новая группа иметь свою собственную папку, основываясь на том, будут ли у ее будущих братьев и сестер свои собственные папки.

ORIGINAL

Вы можете создать новую группу со своей собственной папкой прямо в Xcode, но это совсем не очевидно.

Вместо выбора «Новая группа» выберите «Добавить файлы в« »’. Затем в диалоговом окне выбора файлов нажмите кнопку «Создать папку» или нажмите Command-Shift-N и введите имя новой папки / группы. Затем убедитесь, что выбран «Создать группы для любых добавленных папок», и нажмите «Добавить» или нажмите «Return».

adding a group with its own folder

Это не сильно вас спасет, если вам нужно переместить существующие файлы в новую группу, потому что Xcode все равно этого не сделает.

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

37 голосов
/ 17 сентября 2015

Для тех, кому лень синхронизировать папки, есть хороший инструмент на GitHub .

Synx - это инструмент командной строки, который реорганизует вашу папку проекта Xcode в соответствии с вашейXcode groups.

enter image description here

Надеюсь, это кому-нибудь поможет

5 голосов
/ 28 июня 2012

Посмотрите на ответ andyvn22 здесь

Перефразировать:

  • Xcode 3 : Всякий раз, когда вы создаете группу в Xcode, немедленно получите информацию на нем и обратите внимание на настройку «Path:» чуть ниже его имени. Нажмите «Выберите ...» и установите его в новую папку с тем же именем.
  • Xcode 4 : всякий раз, когда вы создаете группу в Xcode, сразу же выбирайте ее и открывайте правую боковую панель. Обратите внимание на настройку «Path:» просто под своим именем. Нажмите на значок рядом с «Нет» (что это, файл в окне?) и установите его в новую папку с тем же именем.

Затем вам нужно будет вручную переместить любые существующие файлы на диске в новую папку.

Только что попробовал это в моем проекте Xcode4, работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...