Переміщення файлів у справжню папку в Xcode


177

Коли я розпочав свій проект, я з радістю використовував Групи в Xcode, а не буквальні папки: Оскільки я використовую браузер у Xcode для доступу до всього, речі були чудово організовані, і я був щасливий.

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

Зараз я намагаюся реорганізувати речі, створюючи справжні папки та імпортуючи їх у Xcode. На жаль, Xcode не дозволяє мені працювати з ними так, як це робиться з групами. Наприклад, якщо я клацну правою кнопкою миші на фактично доданій папці (синій, а не жовтий) і вирішив додати існуючі файли, він насправді не поміщає їх у цю папку, вона ставить їх у свій корінь.

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

Що я пропускаю? Як я можу переконати Xcode дозволити мені використовувати папки так, як я використовую групи? Тут є відповідь на дещо подібне запитання , але це насправді не вирішує мою проблему, оскільки я працюю з існуючими файлами.

Відповіді:


176

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

Якщо ви переміщуєте купу файлів у нову папку і зберігаєте дочірню ієрархію, це насправді набагато простіше, ніж переміщувати кожен файл окремо:

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

  5. У діалоговому вікні вибору Finder знайдіть еквівалентну нову папку, яку ви створили для цієї групи на кроці 2. Усі файли всередині цієї групи тепер будуть автоматично відкриті!

Хіба це не приємно? Щонайбільше вам доведеться повторити ці 5 кроків один раз для кожної нової групи, яку ви створили (яка перемагає переміщення кожного файлу окремо!)

Бонусні бали!

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


3
Однак це робить файли в Git незавершеними. Звичайно, я завжди можу прочитати файл, але я щось пропускаю?
SleepNot

2
@jeraldo не впевнений, який аромат git ви використовуєте, але у мене ніколи не було такої проблеми. Однак ви можете це легко зробити git add ..
фірмовий сценарій

Я щось пропускаю і не впевнений, що це. Можливо, я не розумію значення слів "впорядкуйте свої файли в них ..." на кроці (1) ?? Я припускаю, що це означає "Додавання файлів до групи шляхом перетягування або будь-якого іншого". Але якщо я це роблю, то, звичайно, Xcode розпізнає файли і не показує їх червоним кольором, як зазначено в кроці (3). Будь-яка ідея, що я роблю неправильно?
hkatz

Ви перемістили фізичні файли, як на кроці 2?
брендоскрипт

1
Ах, я зрозумів це! Крок (2) був для мене трохи занадто виразним. Якби я його переписував, я б сказав щось із ефектом "Створіть дерево фізичної папки, яке відповідає, а потім використовуйте команду" Показати Xcode "у Finder, щоб знайти файли, які ви додали до нової групи на етапі (1), і фізично перемістити ці файли у створену вами папку. " Щось таке ...
hkatz

119

ДОПОМОГО ВИДАЛЕНОГО червня 2017 року: Xcode 9 робить це автоматично, особливих зусиль не потрібно. Ця відповідь і Брендона стосуються лише Xcode 8 та новіших версій.

ВИДАЛЕНО ДЕКЕМВРА 2016: Відповідь Брендона нижче - це краще рішення зараз. Ще коли цю відповідь було створено в 2010 році, це був єдиний варіант, який я міг знайти. Я пропоную відповідь Брендона нижче.


Виявляється, переміщення файлів у справжні папки, безумовно, можливо, хоча і не так просто, як це повинно бути.

Основну інформацію я отримав з питання тут, Xcode, що організовує файли та папки (об'єкти основної моделі даних - iPhone) , але дізнався важливі речі на цьому шляху.

Процес

Переміщення файлів - це двоетапний процес з декількома підетапами:

  1. Скажіть Xcode, де ви хочете, щоб файли були :

    • Клацніть правою / контрольною кнопкою миші на файл або групу файлів, які ви хочете перемістити, і виберіть Отримати інформацію з контекстного меню, яке з'явиться. З'явиться вікно Інформація про групу або Інформація про файл .

    • Натисніть кнопку Вибрати в крайній правій частині вікна в області Шлях . З'явиться діалогове вікно.

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

    • Імена файлу / файлів у групі стануть червоними, що вказує на те, що Xcode не може знайти їх у вказаному вами місці.

  2. Переміщення фактичних файлів

    • У Finder (або Git) перемістіть файли, вибрані на кроці 1, у фактичні папки, у яких ви хочете їх.

    • Перейти до Xcode. Усі файли / групи повинні знову стати чорними. Якщо такі все ще червоні, то ви пропустили переміщення чогось у потрібну папку.

Поради

Я навчився декількох важливих речей під час коригування ~ 300 файлів у цьому проекті:

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

  • Зупиняйте та створюйте кожні кілька хвилин, виконавши крок 2 для ряду файлів. Збірка підкаже, чи досі ви щось накрутили, полегшуючи повернення назад та виправлення, перш ніж ви зробили занадто велику шкоду.

  • Якщо файли не перемістяться туди, куди ви їх хочете - у мене був чорт часу, переміщаючи деякі файли, створені на початку, у папці Класи - ви можете просто перетягнути їх зі свого старого місця в пошуку десь зручно, як робочий стіл, видаліть посилання на них у Xcode, а потім повторно імпортуйте їх за допомогою правої кнопки / натисніть на опцію Додати наявні файли .

  • Якщо раніше ви використовували Xcode для видалення посилань на файли, не переводячи їх у смітник у цьому проекті, ви знайдете файли, які не потрібно переміщувати, а просто сидіти там. Будьте обережні, щоб ви не зробили те, що я зробив, плутаючи назви поточної групи файлів, які я переміщував, і більш старі, вже не пов'язані файли, наполягаючи на тому, що Xcode імпортує їх, оскільки ви думали, що це щільно.

Сподіваюся, це допоможе якійсь майбутній людині. Я здивований, що це було так само важко і час від часу хитро, як це було.


2
Маючи всі файли в одному каталозі, мене справді помиляли. Дякую за це!
Кертіс Шіплі

Ви також можете: переставити структуру каталогів за бажанням у Finder, видалити всі "червоні файли" в проекті, а потім додати їх усе до проекту, використовуючи опцію "група в папках"
bshirley

@bshirley Дуже вірно, і якщо всі файли в основному каталозі повинні бути в проекті, то це може заощадити багато часу. На жаль, якщо проекти, в яких беруть участь кілька людей або які випустили багато випусків, то там може бути будь-яка кількість файлів, які не слід додавати до проекту. У такому випадку вам доведеться відстежити, які з них ви видалили, щоб відновити їх чи щось подібне.
Меттью Фредерік

11
в xcode 4 я повинен був зробити щось інше - не бачив жодних контекстуальних посилань "отримати інформацію" при натисканні правої кнопки. натомість мені довелося відображати вид ідентичність та тип (можливо, це ім'я, яке я не знаю). це найправіша кнопка в параметрах перегляду в рядку заголовка xcode4. Спочатку переміщу файл у файловій системі, а потім клацніть на дивному значку поруч із контуром та повідомляю xcode, де новий файл.
Еван Пон

6
Проблема з переміщенням файлів полягає в тому, що, коли він вже знаходиться під контролем SVN, вам потрібно переконатися, що ви використовуєте додаток, такий як Versions або Cornerstone, щоб переміщувати файли ... Або у вас виникнуть жахливі проблеми з контролем версій! Я б хотів, щоб Apple просто відкинула ідею "груп" і отримала все у справжніх папках, a-la Eclipse ...
jowie

104

У Xcode 5 або Xcode 6:

  1. Створіть у Finder папки, які відображаються у ваших групах
  2. Перемістіть файли до цих папок у Finder
  3. Виберіть кожен червоний файл на бічній панелі Xcode зліва
  4. Натисніть кнопку "Показати / приховати утиліти", щоб відкрити праву бічну панель (див. Рисунок)
  5. У розділі "Ідентифікація та тип" натисніть крихітну кнопку та виберіть розташування файлу (див. Рисунок)

введіть тут опис зображення

Ура.


1
Зауважте деяким користувачам, якщо ви отримуєте помилку про те, що зміни були внесені після попередньої компіляції інформації заголовка, просто почистіть продукт і все вийде!
квантовий

Я дотримувався цього підходу в Xcode 5.1.1, щоб перемістити файл заголовка у фізичну папку. Я можу перемістити файл. Але Xcode каже, що "файл не знайдено" під час створення проекту. Чи можете ви допомогти.
Rashmi Ranjan mallick

22

Я знайшов найнадійніший спосіб подолати жахливий дизайн 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 явно (IMHO) НЕ використовує цю функцію внутрішньо, інакше ніколи не було б дозволено бути такою глючною; якщо Apple не використовує річ, її взагалі не безпечно - вони не дуже добре тестуються :)


2
Я намагаюся це завтра .. це було просте рішення, яке я шукав. Чому вони зробили це так важко? Якби воно просто відображало файлову систему, це було б набагато менш заплутано. Дякую!
delux247

Це було четверте рішення, яке я спробував, і ТІЛЬКІ, з якими я міг працювати з xcode 5.1.1. Також чомусь це не працює для жодної моєї категорії. Мені довелося буквально перенести їх у кошик, вивезти їх назад із кошика, а потім повторно додати їх до xcode і, нарешті, це спрацювало.
user3344977

21

Існує простий в налаштуванні та використанні інструмент командного рядка - "synx", доступний в github, який робить саме те, що потрібно тут.

Він реорганізовує папку проектів Xcode у пошуку, щоб відповідати групам Xcode у проекті.

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

ОНОВЛЕННЯ: XCode 9 підтримує цю функцію за замовчуванням. Отже, більше не потрібно використовувати інші інструменти!


Чудовий інструмент, але стає більш повільним у великих проектах (може знадобитися кілька хвилин, щоб виконати роботу) і, здається, більше не підтримується.
Лукаш

6

Xcode 9

Здається, Xcode 9 зараз підтримує його за замовчуванням. Коли ви переміщуєте файли з групи в іншу, файл також буде переміщений зі старої папки в нову папку. Про це було оголошено у WWDC 2017.



2

Зазвичай я переміщую файли до каталогу безпосередньо в Finder, потім виправляю файли з іменами червоного кольору в XCode у діалоговому вікні "Отримати інформацію": натискаємо кнопку "Вибрати ..." та вибираємо новий локатоін файлу. Це перша відповідь, коли я хочу перемістити файли в XCode, і це працює.


1

Станом на Xcode 4.5 при перетягуванні в структуру папок вона автоматично перетворюється на вкладені групи в Навігаторі проектів. Потім, якщо ви подивитесь на диск (наприклад, клацніть правою кнопкою миші та виберіть Показати у Finder), структура папки збереглася.

Я виявив, що спроба виправити речі зі старого проекту була просто болем. Набагато простіше було просто видалити ці файли та знову перетягнути їх.


1

Щоб перемістити папку в xcode 4.5, я просто ...

  1. Видаліть файли / групи з xcode та виберіть "Видалити посилання".
  2. Зайдіть у Finder і перемістіть папку / файли за потребою.
  3. Після завершення я повертаюсь до Xcode і вибираю File-> Add Files to {ProjectName}.
  4. Переконайтесь, що "Копіювати елементи в папку цільової групи (якщо потрібно)" встановлено прапорець
  5. Переконайтесь, що "Створити групу для будь-якої доданої папки" встановлено
  6. Переконайтеся, що "Додати в ціль" встановлено для вашого проекту

1

Найпростіша техніка для XCode 8 ....

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

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

Зроблено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.