Рабочий процесс для создания групп Xcode в виде папок файловой системы
мне нравится организовывать мои классы в группы на панели навигатора проекта Xcode 4. Я также использую git versioning через терминал, который работает лучше для меня, чем интеграция Xcode 4. Для меня это имеет наибольший смысл, когда группы, которые я создаю в Xcode, соответствуют реальным папкам в моей файловой системе.
однако Xcode, похоже, не заботится о том, где файл (например, Objective-C .ч./M файл) находится в файловой системе, и каждый раз, когда вы добавляете группу (Option+Command+N
) Это чисто косметический, для любого файлы, которые вы помещаете туда, будут находиться в том же месте на вашем жестком диске, что и остальные.
странно то, что если вы сначала создадите папку на жестком диске, а затем перетащите ее в Xcode, вы создали группу с собственным местоположением в вашей файловой системе. Каждый файл, который вы создаете, будет создан в папке на диске. Мне это нравится, но мне бы понравилось еще больше, если бы Xcode сделал это для меня в Option+Command+N
. Процесс переключения в Finder для каждой группы нужно создать и тогда перетаскивание его обратно в нужное место в навигаторе проекта просто глупо.
похоже, что-то настройка исправит, но я не могу найти его! Есть ли лучший способ?
обновление: при перетаскивании папки в Xcode вы получите диалоговое окно, в котором вы можете выбрать "ссылка на папку". Это выглядит многообещающим, однако мой Xcode 4 не принимает файлы там как классы и продолжает говорить мне, что он не может найти файлы. Возможно ответ кроется здесь где-то, но я все еще не могу его найти.
другие новости: я изменил свою основную среду редактора с Xcode на AppCode. Последний поддерживает фактическое создание папок для поддержки групп проектов, сохраняя при этом 100% совместимость с Xcode. Эти ребята из AppCode точно знают, что делают.
3 ответов
обновление
ниже описывается Xcode 9 и более поздние версии.
9 начиная с Xcode, Xcode может автоматически создать папку файловой системы при создании группы в вашем проекте.
при щелчке правой кнопкой мыши (или control-click) в навигаторе проектов контекстное меню будет включать пункт меню "новая группа" и или пункт меню "новая группа с папкой"или меню "новая группа без папки" пункт.
Если 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 решает, что показывать на основе сама группа clicked имеет свою собственную папку.
В основном, Xcode пытается угадать, должна ли Ваша новая группа иметь свою собственную папку на основе того, имеют ли ее будущие братья и сестры свои собственные папки.
оригинал
вы can создайте новую группу со своей собственной папкой непосредственно в Xcode, но это совсем не очевидно.
вместо выбора " новая группа "выберите"Добавить файлы в" ". Затем в диалоговом окне выбора файла щелкните кнопка Создать папку или нажмите Command-Shift-N и введите имя новой папки/группы. Затем убедитесь, что выбрано" создать группы для любых добавленных папок", и нажмите кнопку Добавить или нажмите клавишу Return.
это не сэкономит вам много, если вам нужно переместить существующие файлы в новую группу, потому что Xcode все равно не сделает этого.
но он сохраняет несколько шагов, если вы создаете новую группу для хранения новых файлов.
для тех, кто слишком ленив, чтобы синхронизировать папки, есть хороший инструмент на GitHub.
Synx-это инструмент командной строки, который реорганизует папку проекта Xcode в соответствии с вашими группами Xcode.
надеюсь, это кому-то поможет
взгляните на ответ andyvn22 здесь
перефразируя:
- Xcode 3: всякий раз, когда вы создаете группу в Xcode, немедленно получить информацию на нем и обратите внимание на параметр" Path: "чуть ниже его имени. Щелчок "Выбирать..."и установить ее в новую папку с тем же именем.
- Xcode 4: всякий раз, когда вы создаете группу в Xcode, немедленно выберите ее и откройте правую боковую панель. Обратите внимание на параметр" Path:" просто ниже его названия. Нажмите на значок рядом с " Нет " (что это, файл в окне?) и установить ее в новую папку с тем же именем.
затем вам нужно будет вручную переместить все существующие файлы на диске в новую папку.
просто попробовал это в моем проекте Xcode4, работает как шарм.