Перемещение файлов в настоящую папку в Xcode - PullRequest
174 голосов
/ 11 декабря 2010

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

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

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

Точно так же я не могу переместить файл из поддельной папки (группы) в настоящую папку: Xcode не считает реальные папки допустимыми местами для перемещения материала.

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

Ответы [ 11 ]

171 голосов
/ 19 ноября 2014

Современный (и очень простой!) Подход на 2017 год (Xcode 6, 7, 8, а иногда и 9, поскольку иногда он делает это автоматически):

Если вы перемещаете группу файлов в новую папку и сохраняете дочернюю иерархию, на самом деле это намного проще, чем перемещать каждый файл по отдельности:

  1. Создайте новые группы в дереве папок XCode и упорядочите свои файлы в них так, как вам нравится.
  2. Создайте в Finder соответствующее дерево физических папок и упорядочьте в них ваши физические файлы в соответствии с тем, что вы делали на шаге 1.
  3. Все ссылки в Xcode теперь должны быть красного цвета (это нормально!).
  4. В диспетчере удостоверений и типов выберите Группу в Xcode, которую вы хотите переместить, затем щелкните значок папки на информационной панели:

    image

  5. In the Finder selection dialog, locate the equivalent new folder you created for this group in step 2. All the files inside that group will now be automagically rediscovered!

  6. image

Разве это не мило? Самое большее, вам придется повторить эти 5 шагов один раз для каждой новой группы, которую вы создали (что превосходит перемещение каждого файла по отдельности!)

Бонусные баллы!

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

118 голосов
/ 13 декабря 2010

ДАЛЬНЕЙШЕЕ ИЗДАННОЕ ИЮНЬ 2017: Xcode 9 делает это автоматически, без особых усилий. Этот ответ и Брэндона относятся только к Xcode 8 и более ранним версиям.

РЕДАКЦИЯ ДЕКАБРЯ 2016 ГОДА: Ответ Брэндона ниже - лучшее решение. Когда этот ответ был создан в 2010 году, это был единственный вариант, который я смог найти. Теперь я предлагаю ответ Брэндона ниже.


Оказывается, что перемещение файлов в реальные папки, безусловно, возможно, хотя и не так просто, как должно быть.

Я получил основную информацию из вопроса здесь, Xcode, упорядочивающий файлы и папки (основные объекты модели данных - iPhone) , но в процессе узнал важные вещи.

Процесс

Перемещение файлов представляет собой двухэтапный процесс с несколькими подэтапами:

  1. Скажите Xcode, где вы хотите, чтобы файлы были :

    • Щелкните правой кнопкой мыши или удерживая клавишу Control, щелкните файл или группу файлов, которую вы хотите переместить, и выберите Получить информацию в появившемся контекстном меню. Появится окно Информация о группе или Сведения о файле .

    • Нажмите кнопку Выбор в правой части окна в области Путь . Появится диалоговое окно.

    • Перейдите в папку, в которую вы хотите переместить файлы. При необходимости создайте новую папку . Нажмите кнопку Выберите в правом нижнем углу диалогового окна, затем закройте окно Информация о группе / Сведения о файле .

    • Имена файлов / файлов в группе станут красными, чтобы указать, что Xcode не может найти их в указанном вами месте.

  2. Переместить фактические файлы

    • В Finder (или Git) переместите файлы, выбранные на шаге 1, в те папки, в которых вы хотите их разместить.

    • Переключиться обратно на Xcode. Файлы / группы должны снова стать черными. Если они все еще красные, то вы пропустили перемещение чего-либо в нужную папку.

Советы

Я научился нескольким важным вещам при настройке ~ 300 файлов в этом проекте:

  • Некоторые файлы отказываются двигаться таким образом; то есть при переходе к новому назначению кнопка Выбрать отключается, как и кнопка Новая папка . Решение, хотя я не знаю, почему это имеет значение, состоит в том, чтобы сначала использовать Xcode, чтобы поместить эти файлы в группу (щелкните файлы правой кнопкой мыши и, удерживая клавишу Control, выберите Group , и дайте группе имя), а затем переместите группу в новое место. После того, как вы фактически переместили файлы в Finder, вы можете удалить их из группы (перетащив их в новую родительскую группу / папку и удалив группу).

  • Остановитесь и выполните сборку каждые несколько минут после выполнения шага 2 для ряда файлов. Сборка покажет вам, если вы что-то напортачили, чтобы вам было легче вернуться и исправить это, прежде чем вы нанесли слишком много урона.

  • Если файлы не будут перемещены туда, куда вы хотите их & mdash; У меня было чертовски много времени, когда я перемещал некоторые файлы, которые были созданы ранее, в папке Classes & mdash; Вы можете просто перетащить их из старого места в поисковике в любое удобное для вас место, например, на рабочий стол, удалить ссылки на них в XCode, а затем повторно импортировать их с помощью правой кнопки / control-click Добавить существующие файлы .

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

Надеюсь, это поможет будущему человеку. Я удивлен, что это было так же сложно, а иногда и сложно.

104 голосов
/ 21 октября 2011

В Xcode 5 или Xcode 6:

  1. Создайте папки, которые сопоставляются с вашими группами в Finder
  2. Переместите файлы в эти папки в Finder
  3. Выберите каждый красный файл на боковой панели XCode слева
  4. Нажмите кнопку «Показать / скрыть утилиты», чтобы открыть правую боковую панель (см. Рисунок)
  5. In »Идентификационные данные и тип ", нажмите крошечную кнопку и выберите местоположение файла (см. Рисунок)

enter image description here

Приветствия.

22 голосов
/ 08 июля 2011

Я нашел самый надежный способ обойти ужасный дизайн XCode здесь - организовать ВСЕ ваши файлы в Finder по двум причинам:

  1. Finder не делает «ошибок», в отличие от графического интерфейса XCode
  2. После того, как все организовано в Finder, вы можете перетаскивать целые папки Finder в XCode, и ... он делает то, что вам нужно, без усилий

Даже при перемещении существующих файлов XCode это сделать быстрее:

  1. Выберите файлы в Finder
  2. Создать папку в Finder для них
  3. Перетащите их в папку (автоматически их перемещает)
  4. Перетаскивание папки Finder в Xcode (автоматически: создает папку Xcode, добавляет каждый файл в папку Finder)
  5. cmd - выберите каждый «красный» файл, который вы сейчас видите в XCode (потому что вы их переместили), и нажмите клавишу удаления

Примечание: я никогда не использую опцию «создавать перетаскиваемые папки с подгруппами», потому что в XCode 3 он часто безнадежно глючил и мог испортить проекты. Apple явно (ИМХО) НЕ использует эту функцию для внутреннего использования, иначе никогда бы не допустили такой ошибки; если Apple не использует что-либо, обычно это тоже небезопасно - они не очень хороши в тестировании:)

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

Существует простой в установке и использовании Инструмент командной строки - «synx» , доступный в github, который делает именно то, что здесь необходимо.

Он реорганизует папку проекта Xcode в искателе, чтобы соответствоватьГруппы XCode в проекте.

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

ОБНОВЛЕНИЕ: XCode 9 поддерживает эту функцию по умолчанию.Поэтому больше не нужно использовать другие инструменты!

5 голосов
/ 06 июня 2017

Xcode 9

Кажется, Xcode 9 теперь поддерживает его по умолчанию.При перемещении файлов из группы в другую, файл также будет перемещен из старой папки в новую папку.Это было объявлено в WWDC 2017.

3 голосов
/ 09 марта 2015

Я использовал следующий инструмент для достижения этой цели. Организация папок в группы Xcode

--no-default-exclusions
2 голосов
/ 28 декабря 2010

Я обычно перемещаю файлы в каталог непосредственно в Finder, затем исправляю файлы с красными именами в XCode в их диалоге «Get Info»: нажмите кнопку «Choose ...» и выберите новое местоположение файла , Это первый ответ, когда я хочу переместить файлы в XCode, и это работает.

1 голос
/ 27 июля 2017

Самый простой метод для XCode 8 ....

Предполагается, что у вас есть файлы A, B, C в логической группе, но вы хотите, чтобы они были перемещены в папку на жестком диске.

  1. Создание папки назначения с помощью Finder
  2. Добавление папки в XCode (Файл -> Добавить файлы) с помощью панели параметров для выбора ссылки на папку (не группы)
  3. Перетаскивание файлов A, B, C из (старой) группы в (новую) ссылку на папку в навигаторе проекта.XCode переместит файлы в папку, как в проекте, так и на диске.

Готово.

1 голос
/ 13 июня 2013

Чтобы переместить папку в xcode 4.5, я просто ...

  1. Удалите файлы / группы из xcode и выберите «Удалить ссылку».
  2. Зайдите в finder и переместитепапка / файлы по мере необходимости.
  3. Как только я это сделаю, я возвращаюсь в XCode и выбираю Файл-> Добавить файлы в {ProjectName}.
  4. Убедитесь, что "Копировать элементы в папку группы назначения (при необходимости)«проверен
  5. Убедитесь, что« Создать группу для любой добавленной папки »отмечен
  6. Убедитесь, что« Добавить в цель »отмечен для вашего проекта
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...