Перемещение файлов в настоящую папку в Xcode

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

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

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

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

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

Ответ 1

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

EDITED DECEMBER 2016: Брэндон ответ ниже - лучшее решение. Когда этот ответ был создан в 2010 году, это был единственный вариант, который я смог найти. Теперь я предлагаю ответ Брэндона ниже.


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

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

Процесс

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

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

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

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

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

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

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

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

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

Советы

Я изучил пару важных вещей, при этом отредактировав ~ 300 файлов в этом проекте:

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

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

  • Если файлы не будут перемещаться туда, где вы хотите, чтобы они были: — У меня был дьявол времени на перемещение некоторых файлов, которые были созданы на ранней стадии в папке Classes — вы можете просто вытащить их из своего старого места в поисковом устройстве в удобное место, например на рабочем столе, удалить ссылки на них в Xcode, а затем повторно импортировать их с помощью правого/контрольного щелчка Добавить существующие файлы вариант.

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

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

Ответ 2

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

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

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

    HCx7S.png

  • В диалоговом окне выбора Finder найдите эквивалентную новую папку, созданную для этой группы на шаге 2. Все файлы внутри этой группы теперь будут автоматически обнаружены!

  • Zq88D.gif

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

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

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

Ответ 3

В Xcode 5 или Xcode 6:

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

enter image description here

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

Ответ 4

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

  • Finder не делает "ошибок", в отличие от графического интерфейса XCode
  • Как только вещи организованы в Finder, вы можете перетащить все папки Finder в XCode и... сделать именно то, что вы хотели, без усилий.

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

  • Выберите файлы в Finder
  • Создайте для них папку в Finder
  • Перетащите их в папку (автоматически перемещает их)
  • Перетащите папку Finder в Xcode (автоматически: создает папку Xcode, добавляет каждый файл в папку Finder)
  • cmd - выберите каждый "красный" файл, который вы теперь видите в Xcode (потому что вы их переместили) и нажмите клавишу удаления

NB: я никогда не использую опцию "создать перетаскиваемые папки с подгруппами", потому что в XCode 3, который часто безнадежно глючит и может испортить проекты. Apple ясно (IMHO) НЕ использует эту функцию внутри, иначе никогда не было бы позволено быть такой ошибкой; если Apple не использует ничего, вообще небезопасно использовать его - они не подходят для тестирования:)

Ответ 5

Существует простая настройка и использование Command Line Tool - "synx"  доступные в github, которые делают именно то, что здесь необходимо.

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

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

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

Ответ 6

Xcode 9

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

Ответ 8

Обычно я перемещаю файлы в каталог непосредственно в Finder, а затем исправляю файлы с красными именами в XCode в диалоговом окне "Получить информацию": нажмите кнопку "Выбрать..." и выберите файл new locatoin, Это первый ответ, когда я хочу переместить файлы в XCode, и он работает.

Ответ 9

Как и в Xcode 4.5 при перетаскивании структуры папок, он автоматически превращается в вложенные группы в Project Navigator. Затем, если вы посмотрите на диск (например, щелкните правой кнопкой мыши и выберите "Показать в Finder" ), структура папок была сохранена.

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

Ответ 10

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

  • Удалите файлы/группы из xcode и выберите "Удалить ссылку".
  • Перейдите в finder и переместите папку/файлы по мере необходимости.
  • После этого вернитесь в Xcode и выберите File- > Add Files в {ProjectName}.
  • Убедитесь, что флажок "Скопировать элементы в папку группы получателей (если необходимо)" отмечен
  • Убедитесь, что отмечена опция "Создать группу для любой добавленной папки".
  • Убедитесь, что для вашего проекта отмечен параметр "Добавить в цель".

Ответ 11

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

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

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

Готово.