Создать группы против Создать ссылку на папку в XCode

Мне любопытно, когда использую xcode.

Мне всегда нужно выбирать опцию при копировании файлов классов с открытым исходным кодом, которые мне нужны для моего проекта.

Возможные варианты: "создать группу" и "создать справочную папку".

Я уже прочитал разницу между ними.

Но это совсем не понято.

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

Я этого не хочу.

Я хочу всегда существовать как самостоятельный файл. Что мне выбрать?

5 ответов

Решение

Существует два типа организации структуры проекта [XCode]:

  • структура проектафайловой системы (с помощью Finder.app)
  • Структура проектаIDE (видя с Навигатором проекта в Xcode's область навигатора.)

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

Когда вы создаете группу, это влияет на организацию вашего проекта в XCode, когда вы создаете группу со справочной папкой, она создает и группу в проекте XCode, и папку в вашей файловой системе.

Однако, поскольку Xcode 9 выглядит так, как Apple, заставляет структуру проекта файловой системы соответствовать структуре проекта Xcode. Это означает, что вы явно должны выбрать "Новая группа без папки"

Мне потребовалось некоторое время, чтобы понять разницу между этими двумя вариантами, поэтому я решил поделиться:

Я пишу это, когда Xcode 10 является текущей версией

Самая большая разница в том, как импортированная папка / файл будет доступна из поиска. Допустим, вы хотите импортировать новую папку в ваш проект XCode. Когда вы выбираете Create groups Xcode импортирует вашу новую папку и создаст группу (желтый значок). Когда вы переходите в каталог вашего проекта (используя Finder), вы должны увидеть папку с именем, подобным той, которую вы только что импортировали, но любые дополнительные файлы, которые вы помещаете в эту папку через Finder, не будут видны в вашем проекте Xcode.

Когда вы выбираете Create folder references импортированная папка будет иметь классический синий значок папки. Эта новая папка также будет видна, когда вы перейдете в каталог ваших проектов, но теперь каждый новый файл, который вы помещаете туда, также будет появляться в вашем проекте XCode.

Если вы хотите узнать больше, просто прочитайте это объяснение http://www.thomashanning.com/xcode-groups-folder-references/

Это довольно просто и легко понять.

Добавлены файлы и папки из Finder в Xcodeгруппа. Xcode 10.2.1. Взгляните на примеры безCopy items if needed

Файлы

Общее поведение для create groups а также create folder references

  1. Переименовать файл из Finder не переименовывает файл в Xcode, в результате Xcode не обрабатывает их и помечает их красным цветом.
  2. Переименовать файл из Xcode переименуйте файл в Finder
  3. Измените файл с Finder изменить файл в Xcode и наоборот
  4. Удалить, чтобы удалить файл из Xcode изменить файл в Finder и наоборот
  5. Добавить файл из папки вFinderне добавляет файл в группу вXcode

Папки

Общее поведение для create groups а также create folder references:

  1. Переименовать папку / группу из Xcode переименовать папку в Finder

create groups

Если вы выберете create groups, затем в навигаторе проекта появится соответствующая папка с желтым значком.

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

  1. Переименовать папку вFinderне переименовывает имя группы вXcode. Вы можете работать с группой, но предыдущий контент внутри хоть и виден, но недоступен
  2. Добавить файл в папку вFinderне добавляет файл в группу вXcode
  3. Добавить файл в группу вXcodeне добавляет файл в папку вFinder
  4. Удалить папку вFinderне удаляет группу вXcode. Вы можете работать с группой, но предыдущий контент внутри хоть и виден, но недоступен

create folder references

Если вы выбираете create folder references, тогда папка появится с синим значком в навигаторе проекта.

Это настоящая папка, и любые изменения будут отражены

  1. Переименовать папку вFinderне переименовывает имя папки в Xcode. Предыдущее содержимое исчезло, и вы не можете работать с этой папкой
  2. Добавить файл в папку вFinderдобавляет файл в папку вXcode
  3. Добавить файл в папку вXcodeдобавляет файл в папку вFinder
  4. Удалить папку вFinderудаляет папку вXcode.

[Скопируйте элементы, если необходимо]

Создайте ссылки на папки:

  • Бесполезно, потому что даже если вы укажете, что эта папка будет включена в цель, Xcode не включит какое-либо ее содержимое в эту цель, и нет возможности щелкнуть что-то в папке и посмотреть, в какие цели она включена.

Создать группы:

  • Это единственный путь, если вы хотите включить любое содержимое папок в цель сборки.

Добавлены файлы и папки из Finder в Xcode группа. Xcode 10.2.1. Просто возьмите Лоо К на примерах без Copy items if needed

файлы

Общее поведение для create groups а также create folder references

  1. Переименовать файл из Finder не переименовывает файл в Xcodeв результате Xcode не обрабатывает это и помечает их красным цветом.
  2. Переименовать файл из Xcode переименовать файл в Finder
  3. Изменить файл из Finder изменить файл в Xcode и наоборот
  4. Удалить, чтобы удалить файл из Xcode изменить файл в Finder и наоборот
  5. Добавить файл из папки в Finder не добавляет файл в группу Xcode

Папки

Общее поведение для create groups а также create folder references:

  1. Переименовать папку / группу из Xcode переименовать папку в Finder

create groups

Если вы выбираете create groups, затем соответствующая папка появляется с желтым значком в навигаторе проекта.

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

  1. Переименовать папку в Finder не переименовывает имя группы в Xcode, Вы можете украсть, можете работать с группой, но предыдущий контент внутри, хотя видимый, но недоступный
  2. Добавить файл в папку в Finder не добавляет файл в группу Xcode
  3. Добавить файл в группу в Xcode не добавляет файл в папку в Finder
  4. Удалить папку в Finder не удаляет группу в Xcode, Вы можете украсть, можете работать с группой, но предыдущий контент внутри, хотя видимый, но недоступный

create folder references

Если вы выбираете create folder references, затем папка отображается с синим значком в навигаторе проекта.

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

  1. Переименовать папку в Finder не переименовывает имя папки в Xcode. Предыдущий контент ушел и вы не можете работать с этой папкой
  2. Добавить файл в папку в Finder добавляет файл в папку в Xcode
  3. Добавить файл в папку в Xcode добавляет файл в папку в Finder
  4. Удалить папку в Finder удаляет папку в Xcode,

Какой выбрать?

Почти во всех случаях вы должны использовать groups, Но в некоторых случаях имеет смысл использовать folder references:

Иногда вы хотите поместить файлы во время процесса сборки в проект. Это могут быть, например, самые последние активы. Поэтому, если это не всегда одни и те же файлы, вам нужно выбрать ссылку на эту папку, чтобы проект мог получить доступ к этим файлам. Если кто-то вне группы разработчиков должен иметь возможность добавлять файлы ресурсов в проект, также может иметь смысл использовать ссылки на папки. Таким образом, вы должны использовать только ссылки на папки, если какие-то активы должны быть динамически вставлены в проект. Для обычных файлов проекта, таких как классы, рекомендуется использовать группы.

Источник здесь

Другие вопросы по тегам