Переименование проекта в Xcode 4, а фактический папку


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

9 117

9 ответов:

вы можете сделать это из Xcode, не прибегая к ручному редактированию файла pbxproj в текстовом редакторе!

вот так:

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

  2. в Xcode нажмите на виртуальную папку (теперь сломанную) в левой боковой панели и переименуйте ее, чтобы она соответствовала имени в Finder (вы можете называть ее как угодно, или не переименовывать ее вообще, но это было бы безумием). Это не исправит красные файлы внутри папки, но это нормально.

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

  4. в настройках сборки найдите старое имя папки и вручную переименуйте все найденные вхождения. Обычно их будет два, oldfolder/prefix.pch и oldfolder / info.плист, но могут быть и другие.

все готово!

enter image description here

изменить: этот параметр все еще есть в Xcode 5, но по умолчанию он скрыт. Чтобы показать его, нажмите тонкий заголовок "Identity and Type" в инспекторе над панелью "настройки текста", чтобы развернуть его.

Я делал это десятки раз:

  • переименуйте проект, нажав кнопку и отредактировав заголовок в навигаторе проектов Xcode.
  • Закрыть Xcode.
  • переименовать исходную папку.
  • из Finder откройте .pbxproj файл внутри пакета проекта (контекстное меню "Показать содержимое пакета") с любым текстовым редактором.
  • найти и заменить любое появление исходного имени папки с новым именем папки.
  • сохраните файл.
  • открыть проект Xcode.

задач: переименовать "Play" в "Play2" как в Xcode, так и в Finder

изменить это:

enter image description here

для этого:

enter image description here

действия:

// прежде всего, сделайте резервную копию проекта в Finder!

  • переименовать проект в Xcode Project navigator / / нажмите имя проекта, затем нажмите enter
  • переименовать группу в Xcode Project navigator / / не влияет на папку имя в Finder
  • Закрыть Xcode
  • переименовать внешнюю папку (левый столбец в изображении) в Finder

// все вышеуказанные шаги прямолинейны и без побочных эффектов // // Теперь идет сложная часть: переименуйте внутреннюю папку (средний столбец в изображении) в Finder (тот, с которым на одном уровне .xcodeproj)

  • переименуйте внутреннюю папку в Finder, сохраняя Xcode закрытым
  • щелкните правой кнопкой мыши .xcodeproj, выберите " Показать пакет Содержание"
  • открыть .pbxproj файл с Mac TextEdit
  • поиск и замена всех "Play"на " Play2". Чтобы гарантировать, что все идет правильно, щелкните стрелку в левом конце строки поиска и измените атрибут поиска. изменить "содержит" на "полное слово" и снять флажок "игнорировать регистр"
  • сохранить .pbxproj file
  • откройте проект Xcode и запустите

вот как эффективно переименовать проект в XCode4 (включая папку FILES):

  1. закройте все открытые проекты полностью в Xcode, чтобы предотвратить любые проблемы
  2. скопируйте рассматриваемый проект в новую папку (важно: сохраните резервную копию вашего старого проекта)
  3. открыть проект
  4. переименуйте сам проект в XCode4 (дважды щелкните на имени проекта), измените имя и выполните следующие действия (да на все)
  5. перейти к продукт, управлять схемами и переименовать схему (дважды щелкните по названию схемы)
  6. закройте свой проект (убедитесь, что он полностью закрыт, иначе следующие шаги не будут работать)
  7. в Finder перейдите в папку проекта и щелкните правой кнопкой мыши .xcodeproj файл, затем выберите опцию "Показать содержимое пакета"
  8. щелкните правой кнопкой мыши на .pbxproj файл и открыть его с помощью TextEdit
  9. замените все вхождения имени папки, в которой раньше жили проекты (Старое имя проекта для нового имени проекта)
  10. сохраните файл
  11. откройте проект еще раз и построить его!

во-первых-не переименовывайте проект Xcode!!!

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

Я нашел ответ или как обойти это: откройте файл pbxproj, щелкнув правой кнопкой мыши "показать содержимое пакета", и там вы редактирование проекта.файл pbxproj - вам нужно переименовать ссылку под названием path и некоторые другие вещи-просто найдите имя папки, добавленное "/".

вот и все. Надеюсь, это кому-то поможет.

вот еще одна проблема, о которой вы должны знать при замене значений в вашем *.pbxproj файл. Если ваше старое имя папки было FooBar, у вас будет запись в вашем *.pbxproj файл, который выглядит так:

path = FooBar

предположим, что ваше новое имя папки-Foo Bar. То есть вы вводите пространство. Тогда эта строка должна стать

path = "Foo Bar"

Если вы просто сделаете простой поиск и замену, результатом будет a *.pbxproj файл что Xcode не может разобрать. Если ваше новое имя папки имеет пробел, а старое имя не имеет пробела, обязательно включите двойные кавычки.

Я подытоживаю для себя, изучив различные ответы выше и попробовав себя. Предположим, что текущее имя проекта-ProjAbc, и вы хотите переименовать его в ProjDef:

  1. выход из Xcode этого проекта.

  2. в Finder продублируйте папку над ProjAbc.xcodeproj файл для резервного копирования.

  3. в Finder, переименуйте свободно папку над ProjAbc.xcodeproj, если вы чувствуете, что вам это нужно, чтобы удовлетворить новый проект имя.

  4. в Finder переименуйте папку исходные файлы параллельно с ProjAbc.xcodeproj от ProjAbc до ProjDef

  5. откройте Xcode для ProjAbc.xcodeproj (в навигаторе проектов все файлы в виртуальной исходной папке ProjAbc будут иметь красный цвет).

  6. в Xcode нажмите на виртуальную папку (теперь сломанную) в навигаторе проектов в левой боковой панели и переименуйте ее в соответствии с именем в Finder-ProjDef. Это еще не исправит красные файлы внутри папки, но это нормально.

  7. в Xcode, (по-прежнему выбирая виртуальную папку в левой боковой панели) в правой боковой панели, в инспекторе файлов, нажмите на значок, показанный на скриншоте ниже, чтобы открыть диалоговое окно файла. В диалоговом окне Файл выберите папку, которую вы ранее переименовали (ProjDef). Это повторно свяжет виртуальную папку с реальной папкой на диске и автоматически исправит ссылки на все файлы внутри. Picture shows where to click the Folder icon in File inspector

  8. в Xcode в навигаторе проектов щелкните имя проекта ProjAbc и переименуйте его в ProjDef.

    • вам будет предложено: "переименовать элементы содержимого проекта?". Нажмите кнопку "переименовать".
    • вам будет предложено: "вы хотите, чтобы Xcode делал автоматические снимки перед переименованием проекта и аналогичными операциями?". Нажмите кнопку "отключить"или " включить". Это не имеет значения.
  9. в Xcode, сейчас откройте "настройки сборки" внутри цели ProjDef (внутри проекта ProjDef в навигаторе проектов). Переименуйте как имя папки, так и имя файла обоих *-Info.plist и *-префикс.PCH файлы содержат ProjDef вместо ProjAbc.

  10. в Xcode, в Project Navigator, в папке projdef virtual sources, в "Supporting Files", также переименуйте снова оба *-Info.plist и *-префикс.PCH файлы содержат ProjDef вместо ProjAbc

  11. в меню Xcode, нажмите Продукт / Схема / Управление Схемами... (или нажмите кнопку "ProjAbc"> схема название в строке схемы в левой верхней части окна Xcode и нажмите "управлять схемы...") и в диалоговом окне переименовать схему из ProjAbc в ProjDef, затем нажмите кнопку" OK". Если название проекта состоит из одного слова, вы можете запустить его прямо сейчас!

  12. в Xcode отредактируйте верхнюю строку комментария в разделе Supporting Files / *-Prefix.PCH файл, и заменить ProjAbc на ProjDef (2 раза). Конечно, исправляя этот комментарий необязательный.

  13. Выход Из Xcode.

  14. в Finder, укажите на ProjDef.xcodeproj и откройте его в текстовом редакторе. (Либо откройте его в TextWrangler.приложение, или, щелкните правой кнопкой мыши и во всплывающем меню нажмите кнопку "Показать содержимое пакета", а затем редактировать файл проекта.pbxproj в TextEdit.приложение)

  15. в текстовом редакторе найдите "ProjAbc" (все слово, совпадение), которое должно появиться один раз (в абзаце: / * начать раздел PBXNativeTarget * / в строке: productName = ProjAbc;) и заменить его на "ProjDef". Действительно, проект может работать в любом случае!, так что этот шаг является необязательным.

  16. Если имя проекта состоит из 2 или более отдельных слов, таких как" ProjDef Geh", то вы должны сделать следующие шаги: Поиск ссылки на папку Finder папки виртуальных исходных файлов -

    • поиск строки: path = ProjDef Geh;
    • он появится один раз, в пункте /* ProjDef Geh */
    • заменить это по строчке: path = "ProjDef Geh";
  17. сохранить из текстового редактора и выйти из текстового редактора.

Я нашел приведенные выше ответы действительно полезными, особенно ответ Ника Локвуда.

Я просто переименовал пару папок в Xcode 8 и столкнулся еще с двумя проблемами: А) "отсутствует в рабочих ошибках копирования" Б)сбой основных данных.

Как решить эти две проблемы:

а) " отсутствует в рабочих ошибках копирования"

Я нашел ответ ниже очень полезным:Swift 3 / Xcode 8 Upgrade-100's of Файлы DerivedData отсутствуют в рабочих ошибках копирования

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

  1. очистить производные данные Xcode.
  2. перейдите в систему управления версиями и нажмите кнопку Обновить состояние.
  3. перейдите в систему управления версиями и нажмите Commit; выберите все файлы на левой боковой панели меню commit при фиксации (щелкните правой кнопкой мыши -> выбрать все).
  4. вы, вероятно, получите ошибка.
  5. закройте меню фиксации.
  6. Обновить Статус.
  7. закройте проект, выйдя из Xcode.
  8. откройте свой проект, обновите Статус, снова зафиксируйте.
  9. на этот раз фиксация должна работать.
  10. Выберите Проект - > Очистить.

Я предполагаю, что вы уже включили управление версиями. Если вы этого не сделали, или если вы застряли, следуя моим инструкциям, просто следуйте более подробным инструкциям в разделе ссылку.

B)сбой основных данных

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

  1. неправильно AppDelegate название модели. Так было и в моей ситуации. Перейдите в свой AppDelegate и найдите let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME"). Убедитесь, что имя правильное.

    в будущем (через несколько лет после этого поста, когда Apple снова изменит основные данные) или если вы используете более старую версию основных данных, внимательно посмотрите на AppDelegate. Там, вероятно, что-то фанки там, что возится с вашими основными данными.

  2. некорректное имя модели в xcdatamodeld. Перейдите в Finder и откройте свой .xcdatamodeld в текстовом редакторе.

проверьте следующее:

<plist version="1.0">
  <dict>
     <key>_XCCurrentVersionName</key>
     <string>YOUR CORE DATA MODEL NAME.xcdatamodel</string>  <-- Make sure this is correct.
  </dict>
</plist>

подробнее здесь: файлы модели основных данных не загружаются переименовать

  1. если две вещи выше не работают, попробуйте 1) удалить свой объект, а затем добавить другой объект, который идентичен или 2) удалить xcdatamodeld, а затем добавить другую модель данных, которая идентична (и убедитесь, что имя нового xcdatamodeld соответствует тому, что находится в вашем AppDelegate и остальной части вашего кода). никогда не делайте этого с живым приложением - или если вы сделаете это, убедитесь, что правильно перенести основные данные во время выполнения так.

Если у вас есть старая ссылка исходного проекта в ваш проект, когда дублировать проект (каждое изменение влияет на оба proejct) вот решение

  • дублировать проект из исходного проекта
  • переименовать исходную папку исходного проекта, который ломает ссылочную проблему.
  • в дубликате proejct все идет красным выберите текущую папку проекта. (скриншот показывает в зеленом ТИКе ответ stackoverflow)

========================================================================