Как мне организовать файлы моего проекта XCode? - PullRequest
32 голосов
/ 28 августа 2010

Я пытаюсь обернуть голову вокруг файловой организации Xcode - или ее не хватает. Я могу делать все, что хочу в проекте, и он отлично смотрится со всеми «поддельными» папками и структурой. Я иду посмотреть на файловую систему и бум ОГРОМНЫЙ беспорядок. Я попытался импортировать файлы с опцией Create Folder Reference for any added folder, и это работает, вроде. Я получаю желаемую структуру как в XCode, так и в файловой системе.

Проблемы: Когда я добавляю файл в папку в файловой системе, которая является ссылкой на папку в XCode, его нет в XCode, когда я смотрю, даже после перезагрузки проекта. Файлы / подпапки в справочнике папок не могут быть перемещены в XCode. Когда я перемещаю их в файловую систему, я получаю красные ссылки (не можете найти файл?) В Xcode.

Как сохранить организованный проект и в файловой системе? Как настроить проект так, чтобы он просто распознавал папку и отображал ее (текущие и актуальные) файлы и подпапки в моем проекте?

Другая проблема, с которой я сталкиваюсь, если я использую ссылку на папку и изменяю файл, файл не обновляется в моем приложении, пока я не выполню полную очистку и перестройку. Если я не использую ссылку на папку, all мои файлы будут выгружены в папку Resource пакета приложения, а не в той хорошей структуре, которая у меня есть в моем проекте.

Мне все равно? Должен ли я просто использовать поддельные папки и позволить всему идти везде, и все равно? Мой пакет приложений будет в беспорядке, файловая система будет в беспорядке, но все это будет работать ... Я надеюсь?

Edit:

Моя главная причина желать организованной файловой системы состоит в том, что файлы ресурсов (изображения, звуки, другие файлы данных и т. Д.) Не редактируются в XCode. Я должен получить доступ к ним в сторонних приложениях через файловую систему. Если это беспорядок, то его сложнее найти и поддерживать в других сторонних приложениях.

Также, что произойдет, если я хочу структуру, подобную следующей:

  • Изображения / обои / Name.png
  • Изображения / Иконки / Name.png
  • Изображения / Титулы / Name.png

Стоит ли использовать для организации длинные имена файлов, а не папки?

  • Images_Backgrounds_Name.png
  • Images_Icons_Name.png
  • Images_Titles_Name.png

Ответы [ 8 ]

16 голосов
/ 15 марта 2011

Мне также хотелось бы, чтобы Xcode автоматически синхронизировал себя и файловую систему.

Настолько, что я потратил час, делая это вручную для проекта под названием acani-iphone на GitHub ,По сути, я просто перемещал некоторые файлы с помощью Finder, создавая новые папки, как мне было угодно.Затем я переключился обратно на XCode и увидел, что файлы, которые я только что переместил, были красными (потому что XCode думал, что они там, где я их переместил, и поэтому не мог их найти).

ОБНОВЛЕНИЕ: Я простопонял, что тогда я мог просто щелкнуть по красной группе или файлу, нажать CMD + i (получить информацию из контекстного меню, которое можно открыть, щелкнув правой кнопкой мыши по красному файлу или группе), и на вкладке Общие, щелкнул Выбрать, затем нашел, куда я переместил файл в файловую систему.Но я этого не сделал, вот что я сделал вместо этого, что также работает:

Затем я просто выделил все красные файлы в Xcode и нажал command + delete, чтобы удалить битые (красные) ссылки.Затем я щелкнул правой кнопкой мыши группу, в которую я хотел добавить файлы (обычно это одна и та же группа), и щелкнул Add> Existing Files....Затем я нашел те же файлы в новом месте в файловой системе.Я оставил флажок «Скопировать элементы в папку целевой группы (если необходимо)», я установил переключатель «Рекурсивно создавать группы для любых добавленных папок» и проверил добавление в целевой файл Acani, если файлы, которые я добавлял, использовались для созданияПриложение для iPhone от Acani.

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

Я обнаружил, что файлы acani_Prefix.pch и acani-Info.plist должен был оставаться в директории корневой файловой системы (хотя могут быть настройки, которые можно установить, чтобы эти файлы находились где-то еще, например, я думаю, что вы можете добавить строку в acani-Info.plist, чтобы вы могли перемещать / переименовывать acani_Prefix.pch, но я в порядке с ними в корневом каталоге файловой системы.

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

6 голосов
/ 28 августа 2010

ОК, вот как это работает:

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

Лучший способ (imo) добавить существующий файл (или группу файлов) в проект (скажем, какой-то код, который вы только что загрузили) - выбрать «добавить существующие файлы», а затем «скопировать элементы в место назначения».Папка группы (если необходимо) "в следующем диалоговом окне, если вы хотите, чтобы в вашем проекте была копия рассматриваемых файлов, а не просто ссылка на них (есть преимущества и недостатки обоих).

Не беспокойтесь слишком сильно об именах папок в Xcode или о том, куда вы помещаете вещи, но старайтесь придерживаться стандарта, который имеет смысл в вашей среде.Например, я всегда помещаю классы, которые я пишу, в «Классы», и у меня есть отдельные папки для любого библиотечного кода, который я скачал для использования в проекте.Я всегда помещаю изображения / значки / аудио и т. Д. В раздел "Ресурсы".

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

Гибкость в XCode является преднамеренной.Вам решать, как вы хотите организовать вещи.

5 голосов
/ 28 августа 2010

Должен ли я заботиться вообще?Должен ли я просто использовать поддельные папки и позволить всему идти везде, и все равно?Мой пакет приложений будет в беспорядке, файловая система будет в беспорядке, но все будет работать ... Надеюсь?

ИМО нет ... :) в принципе.Все дело в том, что XCode был разработан, чтобы дать вам лучший опыт программирования.Если бы Apple хотела, чтобы вы физически организовали все ваши файлы и папки в реальной файловой системе, они бы сделали это так.

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

2 голосов
/ 22 апреля 2015

Использовать Synx .

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

1 голос
/ 29 августа 2010

Было бы замечательно, если бы Xcode мог синхронизировать себя и файловую систему.К сожалению это не так.Одной из причин этого является то, что иерархия в вашем SCCS совпадает с иерархией в Xcode.

Я возвращаюсь к тому, чтобы упорядочить вещи в Xcode и оставить файловую систему разделенной на не более чем «классы» и"Ресурсы".

0 голосов
/ 06 июня 2018

Это изменилось с Xcode 9. Из примечаний к выпуску :

Группы в Project Navigator теперь более тесно связаны с каталоги в файловой системе. (28612132)

  • Перетаскивание файлов между группами в Навигаторе проектов перемещает файлы в файловой системе и обновляет все связанные рабочие копии SCM.
  • Когда группа подключена к папке в файловой системе, создание, переименование и удаление групп обновляет соответствующие файлы и папки в файловой системе.
  • Чтобы удалить соединение между группой и папкой в ​​файловой системе, выберите группу, а затем откройте инспектор файлов и нажмите на кнопку Очистить путь (X).
  • Чтобы добавить или обновить связь из файла или папки в файловой системе с файлом или группой в проекте, выберите файл или группы, откройте инспектор файлов и перетащите соответствующий файл или папку в разделе Расположение в Инспекторе файлов.

Новое поведение доступно из команды «Новая группа с папкой» (которая может выглядеть как «Новая группа»), а старое поведение доступно из команды «Новая группа без Папка». (который также может выглядеть как просто «Новая группа»!) Доминирующее использование среди любых существующих групп в целевой папке, по-видимому, определяет, какая команда помечается как «Новая группа». Это немного сбивает с толку, но если у вас есть привычка выбирать одно или другое, похоже, идея заключается в том, что вы можете просто придерживаться стандартной команды «Новая группа». (См. более подробное объяснение Роба Мэйоффа. )

0 голосов
/ 22 августа 2011

я чувствую, что вы лично не можете НЕ заботиться о фактической структуре и просто полагаться на рабочие пространства.

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

некоторые проблемы могут быть источникомхотя xcode4 работает и с git, и с SVN.

0 голосов
/ 08 августа 2011

Что я делаю, это создаю группу для представления каждой папки, а затем, перед добавлением файлов в нее, на правой панели первой вкладки, сразу под «Путь», появляется значок, позволяющий выбрать папку. В этом диалоговом окне я создаю папку, соответствующую группе, и выбираю ее.

В xcode3 это привело к появлению диалогов нового и добавления файлов, начинающихся по этому пути. Это стоило того. Xcode4, однако, не поддерживает этот параметр. Поэтому сомнительно, есть ли в этом какая-то реальная ценность. Я также хотел бы, чтобы XCOde поддерживал лучшую организацию файловой системы.

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

...