Перейменування проекту xcode 4 та фактичної папки


119

Я знаю, як перейменувати проект у Xcode 4, але як перейменувати вихідну папку? Вся справа в тому, що перейменування проекту в Xcode перейменовується лише в Xcode (Хоча це прогрес порівняно з попереднім) - але чому Xcode не перейменовує папку у файловій системі, я не знаю.


Ви намагалися просто перейменувати папку?
Девід Браун

2
У мене є мій друг, і всі файли у файлі проекту відсутні тоді - усі вони позначені прочитаними, оскільки вони не мають рефлексії. Але я знайшов душу - дивіться мою відповідь. Дякуємо за відповідь
Chris G.

Відповіді:


259

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

Ось як:

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

  2. У Xcode натисніть на (зараз зламану) віртуальну папку на лівій бічній панелі та перейменуйте її так, щоб вона відповідала імені в Finder (ви можете насправді називати його будь-що, або не перейменовувати його, але це було б шалено ). Це не виправить червоні файли всередині папки, але це нормально.

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

  4. У налаштуваннях збирання знайдіть стару назву папки та перейменуйте вручну всі події, які ви знайдете. Зазвичай їх буде два: oldfolder / prefix.pch та oldfolder / info.plist, але можуть бути й інші.

Готово!

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

EDIT: ця опція все ще є в Xcode 5, але корисно прихована за замовчуванням. Щоб показати це, натисніть на тонкий заголовок "Ідентичність та тип" в інспекторі над панеллю "Налаштування тексту", щоб розгорнути його.


Відмінно я просто додам, що якщо перейменування є частиною перейменування всього проекту, то є ще один крок: Змініть "Ім'я проекту" в правій частині, у верхній частині та дозвольте Xcode перейменовувати все, що відповідає всередині.
RedYeti

1
Все спрацювало чудово, і проект дійсно перейменований, але повідомлення про збірку вгорі та ім’я тренажера все ще зберегли стару назву, щоб змінити це: Перейдіть до меню продукту, керуйте схемами та перейменуйте схему
BlackTigerX

Правда. Ви також можете просто видалити схему і натиснути кнопку автоматичного створення схем.
Нік Локвуд

Хтось знає, як це зробити в xCode 5? Я вже не бачу цієї чарівної кнопки. :(
Джейсон

Це все ще є, просто приховано. Вам потрібно розгорнути рядок під назвою "Ідентифікація та тип" в інспекторі, натиснувши на нього. Узяв мене близько 20 хвилин, щоб зрозуміти це!
Нік Локвуд

112

Я робив це десятки разів:

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

3
Просто пам’ятайте, що потрібно зробити це після перейменування проекту
Арам Кочарян,

Я виконую ваші вказівки і не вдається. Я думаю, що проблема полягає в тому, щоб "Знайти та замінити будь-яку появу оригінальної назви папки новою назвою папки". Чи можете ви надати більш детальну інструкцію щодо цього кроку? Спасибі
Philip007

Як здійснити пошук та заміну залежить від обраного текстового редактора чи інструменту. У моєму випадку з vim: <ESC>:% s / old / new / g <ENTER> Він може вийти з ладу, якщо у файлі проекту є щось інше з суперечливим іменем.
djromero

Спасибі @madmw, я зрозумів це. Я використовую TextEdit. Я думаю, що фокус полягає в заміні атрибута "Містить" на "Повне слово" під час проведення пошуку та заміни. І я розміщую детальну інструкцію нижче.
Philip007

Працює частування! Під час перейменування папки цілі, наприклад, статичної бібліотеки, мені також довелося возитися зі своїми схемами, а також перейменувати заголовок префікса та файл плісту інформації.
Тім Поттер

12

Завдання: Перейменуйте "Play" на "Play2" і в Xcode, і в Finder

Змініть це:

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

До цього:

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

КРОКИ:

// Перш за все, будь ласка, створіть резервну копію проекту у Finder!

  • Перейменуйте проект у навігаторі проектів Xcode // Клацніть назву проекту та натисніть клавішу Enter
  • Перейменуйте групу в навігаторі проектів Xcode // не впливаючи на ім’я папки в Finder
  • Закрити Xcode
  • Перейменуйте зовнішню папку (лівий стовпець на зображенні) у Finder

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

  • Перейменуйте внутрішню папку в Finder, зберігаючи Xcode закритим
  • Клацніть правою кнопкою миші .xcodeproj, виберіть "Показати зміст пакета"
  • Відкрийте файл .pbxproj за допомогою Mac TextEdit
  • Шукайте та замініть усі "Play" на "Play2". Щоб гарантувати, що все йде правильно, натисніть стрілку в лівому кінці панелі пошуку та змініть атрибут пошуку. Змініть "Містить" на "Повне слово" та зніміть прапорець "Ігнорувати регістр"
  • Збережіть .pbxproj файл
  • Відкрийте проект Xcode та запустіть

4

Ось як ефективно перейменувати проект у XCode4 (Включаючи папку файлів):

  1. Закрийте всі відкриті проекти в XCode повністю, щоб уникнути будь-яких проблем
  2. Скопіюйте відповідний проект у нову папку (ВАЖЛИВО: ЗБЕРІГАЙТЕ РЕКЛАМУ СТАРОГО ПРОЕКТУ)
  3. Відкрийте проект
  4. Перейменуйте сам проект у XCode4 (двічі клацніть на назві проекту), змініть ім'я та виконайте кроки (так для всього)
  5. Перейдіть до продукту, керуйте схемами та перейменуйте схему (двічі клацніть на назві схеми)
  6. Закрийте проект (переконайтеся, що повністю закрито, інакше наступні кроки не спрацюють)
  7. У Finder перейдіть до папки Project і клацніть правою кнопкою миші на файл .xcodeproj, а потім виберіть опцію "Показати зміст пакета"
  8. Потім клацніть правою кнопкою миші файл .pbxproj і відкрийте його за допомогою TextEdit
  9. Замініть всі випадки імені папки, де жили раніше проекти (стара назва проекту для нової назви проекту)
  10. Збережіть файл
  11. Відкрийте проект ще раз і будуйте його!

Чи можете ви надати більш детальну інструкцію на кроці 9?
Philip007

2

Перше - не перейменуйте проект Xcode !!!

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

Я знайшов відповідь або як це вирішити: відкрийте файл pbxproj, натиснувши правою кнопкою миші «Показати вміст пакета», і там ви редагуєте файл project.pbxproj - вам потрібно перейменовувати посилання, що називається шлях, та деякі інші речі - просто шукайте додано ім'я папки "/".

Це все. Сподіваюся, це допоможе комусь.


2
Я вчора перейменував проект, і він прекрасно працював. Я згоден, що Xcode - це "ах", хоча: D
manmal

Існує ідеально безпечний і підтримуваний спосіб зробити це - дивіться мою відповідь.
Нік Локвуд

2

Ось ще одна проблема, про яку слід пам’ятати, замінюючи значення у файлі * .pbxproj. Якщо ваше старе ім'я папки було FooBar, ви матимете запис у файлі * .pbxproj, який виглядає приблизно так:

шлях = FooBar

Припустимо, ваше нове ім'я папки - Foo Bar. Тобто ви вводите пробіл. Тоді ця лінія повинна стати

path = "Foo Bar"

Якщо ви просто знайдете та заміните, результатом буде файл * .pbxproj, який Xcode не може проаналізувати. Якщо у вашій новій папці є пробіл, а в старому імені не було пробілів, обов’язково додайте подвійні лапки.


2

Я підбиваю підсумки, вивчивши різні відповіді вище і спробувавши себе. Припустимо, поточна назва проекту - 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). Це відновить віртуальну папку з реальною папкою на диску і автоматично зафіксує посилання на всі файли всередині. На малюнку показано, де натиснути значок папки в інспекторі файлів

  8. У Xcode в «Навігаторі проектів» натисніть назву проекту ProjAbc та перейменуйте його на ProjDef.

    • Вам буде запропоновано: "Перейменувати елементи вмісту проекту?". Натисніть кнопку «Перейменувати».
    • Вам буде запропоновано: "Чи хочете ви, щоб Xcode робила автоматичні знімки перед перейменуванням проекту та подібними операціями?". Клацніть або "Відключити", або "Увімкнути". Не важливо.
  9. У Xcode тепер відкрийте "Налаштування побудови" всередині цілі ProjDef (всередині проекту ProjDef в Project Navigator). Перейменуйте і ім’я папки, і ім’я файлів обох файлів * -Info.plist та * -Prefix.pch, щоб вони містили ProjDef замість ProjAbc.

  10. У Xcode, у проектному навігаторі, у папці віртуальних джерел ProjDef у "Підтримуючих файлах" також перейменуйте знову файли * -Info.plist та * -Prefix.pch, щоб вони містили ProjDef замість ProjAbc

  11. У меню Xcode натисніть продукт / схему / керуйте схемами ... (або натисніть "ProjAbc"> ім'я схеми в панелі схем у лівій верхній частині Xcode та натисніть "Керувати схемами ...") і в діалоговому вікні перейменуйте схему з ProjAbc - ProjDef, потім натисніть кнопку "OK". Якщо назва проекту складається з одного слова, ви можете запустити його прямо зараз!

  12. У Xcode відредагуйте верхній рядок коментарів у підтримці файлів / * - файл Prefix.pch та замініть ProjAbc на ProjDef (2 рази). Звичайно виправлення цього коментаря необов’язкове.

  13. Вийдіть з Xcode.

  14. У Finder вкажіть на ProjDef.xcodeproj та відкрийте його в текстовому редакторі. (Або відкрийте його в TextWrangler.app, або клацніть правою кнопкою миші та у спливаючому меню натисніть "Показати зміст пакета", а потім відредагуйте файл project.pbxproj у TextEdit.app)

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

  16. якщо назва проекту складається з 2 або більше окремих слів, як-от "ProjDef Geh", то ОБОВ'ЯЗКОВО виконати наступні кроки: Шукати посилання на папку Finder в папці файлів віртуальних джерел -

    • Пошук рядка: path = ProjDef Geh;
    • Він з’явиться один раз, в абзаці / * ProjDef Geh * /
    • Замініть його рядком: path = "ProjDef Geh";
  17. Збережіть з текстового редактора та вийдіть із текстового редактора.

  18. Це воно. Як написано вище, якщо назва проекту складається з одного слова, ви можете запустити право в кінці кроку 11.


Ви зробили це складнішим, ніж це має бути. Якщо ви зробите крок 8 (перейменування проекту) спочатку, перед кроком 4 (перейменування вихідної папки) він автоматично перейменує ваш файл Info.plist та Prefix.pch, щоб ви могли пропустити крок 9 та 10.
Нік Локвуд

0

Наведені вище відповіді я вважаю дуже корисними, особливо відповідь Ніка Локвуда.

Я просто перейменував пару папок у Xcode 8 і зіткнувся з ще двома проблемами: A) "відсутність помилок у робочій копії" B) збої основних даних .

Як вирішити ці дві проблеми:

A) " відсутній у помилках робочої копії "

Наступна відповідь виявилася дуже корисною: Swift 3 / Xcode 8 Upgrade - 100 файлів DerivedData відсутні у помилках робочої копії

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

  1. Очистити отримані Xcode дані.
  2. Перейдіть до «Контроль джерела» та натисніть «Оновити статус».
  3. Перейдіть до «Контроль джерела» та натисніть «Завершити»; виберіть усі файли на лівій бічній панелі меню фіксації при здійсненні (правою кнопкою миші -> Вибрати всі).
  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>

Більш докладно тут: файли моделі Core Data не завантажуються при перейменуванні

  1. Якщо дві вищезгадані речі не спрацьовують, спробуйте 1) видалити свою сутність, а потім додати іншу сутність, ідентичну або 2) видалити xcdatamodeld, а потім додати іншу модель даних, ідентичну (і переконайтесь, що ім'я нового xcdatamodeld відповідає що є у вашому AppDelegate та решта вашого коду). Ніколи не робіть цього за допомогою додатка в реальному часі - або якщо ви це зробите, переконайтесь, що правильно мігрувати основні дані, виконуючи це.

0

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

  • Дублікат проекту з вихідного проекту
  • Перейменуйте папку джерела проекту, що порушує проблему.
  • У дублікаті проекту все виходить червоним кольором, виберіть поточну папку проекту. (скріншот показується зеленою галочкою відповіді stackoverflow)

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

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