重命名xcode 4项目和实际文件夹


119

我知道如何在Xcode 4中重命名项目,但是如何重命名源文件夹?事实是,在Xcode中重命名项目仅在Xcode中重命名(尽管与以前相比是进步的)-但是Xcode为什么不重命名文件系统中的文件夹,我不知道。


您是否尝试过仅重命名文件夹?
大卫·布朗

2
我有我的朋友,然后项目文件中的所有文件都丢失了-它们都被标记为已读,因为没有任何参考。但是我找到了灵魂-请看我的回答。感谢您的回覆
克里斯·G

Answers:


259

您可以在Xcode中执行此操作,而无需在文本编辑器中手动编辑pbxproj文件!

这是如何做:

  1. 在Finder中重命名您的源文件夹。最初,这会破坏项目,因为Xcode不会自动检测到虚拟(黄色)项目文件夹指向的实际文件夹的更改时间,因此该文件夹内的所有文件在Xcode中都将变为红色。不用担心,我们将在步骤3中对其进行修复。

  2. 在Xcode中,单击左侧边栏中的(现在已损坏的)虚拟文件夹,并将其重命名以与Finder中的名称匹配(您实际上可以将其命名为所需的名称,也可以根本不重命名,但这太疯狂了)。那不会修复文件夹中的红色文件,但是没关系。

  3. 在Xcode的右侧工具栏中,单击下面的屏幕快照中显示的图标,以打开文件对话框。选择您以前重命名的文件夹。这会将虚拟文件夹与磁盘上的真实文件夹重新关联,并将自动修复指向其中所有文件的链接。

  4. 在构建设置中,搜索旧的文件夹名称,然后手动重命名找到的所有匹配项。通常会有两个,oldfolder / prefix.pch和oldfolder / info.plist,但可能还有其他两个。

全做完了!

在此处输入图片说明

编辑:此选项仍在Xcode 5中存在,但默认情况下会被隐藏。要显示它,请在“文本设置”面板上方的检查器中单击稀薄的“身份和类型”标题以将其展开。


太好了,我只想补充一点,如果重命名是重命名整个项目的一部分,那么还有另外一步:在右侧顶部区域中更改“项目名称”,并允许Xcode在内部重命名所有内容以进行匹配。
RedYeti

1
一切工作正常,项目确实被重命名,但是顶部的生成消息和模拟器的名称仍然保留了旧名称,以更改此名称:转到产品菜单,管理方案并重命名方案
BlackTigerX

真正。您也可以只删除方案,然后按自动创建方案按钮。
尼克·洛克伍德

有人知道如何在xCode 5中执行此操作吗?我看不到那个魔术按钮了。:(
杰森

它仍然在那里,只是被隐藏。您必须通过单击在检查器中展开名为“身份和类型”的行。花了我大约20分钟的时间才弄清楚!
尼克·洛克伍德

112

我已经做了很多次了:

  • 通过单击然后在Xcode Project Navigator中编辑标题来重命名项目。
  • 关闭Xcode。
  • 重命名源文件夹。
  • 在Finder中,.pbxproj使用任何文本编辑器打开项目包内的文件(上下文菜单“ Show Package Contents”)。
  • 搜索并用新的文件夹名称替换任何出现的原始文件夹名称。
  • 保存文件。
  • 打开Xcode项目。

3
只要记得在重命名项目后执行此操作即可
Aram Kocharyan 2012年

我按照您的指示失败。我认为问题出在“用新文件夹名称搜索并替换所有原始文件夹名称”。您可以在此步骤中提供更详细的说明吗?谢谢
Philip007

如何进行搜索和替换取决于所选择的文本编辑器或工具。就我而言,使用vim:<ESC>:%s / old / new / g <ENTER>如果项目文件中还有其他名称冲突的文件,则可能会失败。
djromero 2012年

谢谢@madmw,我知道了。我正在使用TextEdit。我认为,诀窍是在进行搜索和替换时将“包含”属性替换为“完整单词”。我在下面发布了详细说明。
Philip007

工作请客!重命名目标文件夹(例如静态库)时,我还不得不弄乱我的方案,并且还要重命名前缀标头和info plist文件。
蒂姆·波特2013年

12

任务: 在Xcode和Finder中将“播放”重命名为“ Play2”

更改此:

在此处输入图片说明

对此:

在此处输入图片说明

脚步:

//首先,请在Finder中备份项目!

  • 在Xcode Project导航器中重命名项目//单击项目名称,然后按Enter
  • 重命名Xcode Project导航器中的组//不影响Finder中的文件夹名称
  • 关闭Xcode
  • 在Finder中重命名外部文件夹(图像中的左列)

//以上所有步骤都是直接且没有副作用的// //现在是棘手的部分:在Finder(与.xcodeproj处于同一级别的文件夹)中重命名内部文件夹(图像中的中间列)

  • 重命名Finder中的内部文件夹,同时保持Xcode关闭
  • 右键单击.xcodeproj,选择“显示软件包内容”
  • 使用Mac TextEdit打开.pbxproj文件
  • 搜索并用“ Play2”替换所有“ Play”。为确保一切正常,请单击搜索栏左端的箭头,然后修改搜索属性。将“包含”更改为“全字”,然后取消选中“忽略大小写”
  • 保存.pbxproj文件
  • 打开Xcode项目并运行

4

这是在XCode4中有效重命名项目的方法(包括文件文件夹):

  1. 完全关闭XCode中所有打开的项目,以防止出现任何问题
  2. 将有问题的项目复制到新文件夹(重要说明:保留旧项目的备份)
  3. 打开项目
  4. 在XCode4中重命名项目本身(双击项目名称),更改名称并按照步骤操作(对所有内容都是)
  5. 转到产品,管理方案并重命名方案(双击方案名称)
  6. 关闭您的项目(确保已完全关闭,否则下一步将无法进行)
  7. 在Finder中,转到Project文件夹,然后右键单击.xcodeproj文件,然后选择选项“显示包内容”
  8. 然后右键单击.pbxproj文件,然后使用TextEdit打开它
  9. 替换项目所在的所有出现的“文件夹名称”(旧项目名称替换为新项目名称)
  10. 保存文件
  11. 再次打开项目并构建它!

您能否在步骤9中提供更详细的说明?
Philip007 2012年

2

首先-不要重命名Xcode项目!!!

如果需要的话,可能是下面的问题-我从没有使它起作用,最终创建了一个新项目,并从头开始复制现有文件。Xcode是如此啊....它有很多非生产性的东西,例如也尝试将文件从“名称”重命名为“名称”。好吧,玩得开心。

我找到了答案或解决方法:右键单击“显示包内容”打开pbxproj文件,然后在其中编辑project.pbxproj文件-您必须重命名一个名为path的引用以及其他一些内容-只需搜索文件夹名称添加“ /”。

这就对了。希望它能帮助一些人。


2
我昨天重命名了一个项目,效果很好。我同意Xcode是“
ahh

有一种完全安全且受支持的方式来执行此操作-请参阅我的答案。
尼克·洛克伍德

2

这是替换* .pbxproj文件中的值时应注意的另一个问题。如果您的旧文件夹名为FooBar,则您的* .pbxproj文件中将包含一个条目,如下所示:

路径= FooBar

假设您的新文件夹名称为Foo Bar。也就是说,您正在引入一个空间。然后,这条线应该变成

path =“ Foo Bar”

如果只进行简单的查找和替换,则结果将是Xcode无法解析的* .pbxproj文件。如果您的新文件夹名称带有空格,而旧名称没有空格,请确保使用双引号。


2

在检查了上面的各种答案并尝试了一下之后,我为自己总结了一下。假设当前项目名称为ProjAbc,并且要将其重命名为ProjDef:

  1. 退出该项目的Xcode。

  2. 在Finder中,将文件夹复制到ProjAbc.xcodeproj进行备份。

  3. 在Finder中,如果您认为需要它来适应新的项目名称,则可以免费重命名ABOVE ProjAbc.xcodeproj文件夹。

  4. 在Finder中,将与ProjAbc.xcodeproj平行的源文件文件夹从ProjAbc重命名为ProjDef

  5. 为ProjAbc.xcodeproj打开Xcode(在Project Navigator中,虚拟源文件夹ProjAbc中的所有文件均为红色)。

  6. 在Xcode中,在左侧边栏的“项目导航器”中单击(现在已断开)虚拟文件夹,并将其重命名以与Finder-ProjDef中的名称匹配。那还不能解决文件夹中的红色文件,但是没关系。

  7. 在Xcode中(仍在左侧工具栏中选择虚拟文件夹)在右侧工具栏中,在“文件”检查器中,单击下面的屏幕快照中显示的图标,以打开一个文件对话框。在文件对话框中,选择以前重命名的文件夹(ProjDef)。这会将虚拟文件夹与磁盘上的真实文件夹重新关联,并将自动修复指向其中所有文件的链接。 图片显示了在文件检查器中单击“文件夹”图标的位置

  8. 在Xcode中的Project Navigator中,单击ProjAbc项目名称,然后将其重命名为ProjDef。

    • 系统将提示您:“重命名项目内容项?”。点击“重命名”按钮。
    • 系统将提示您:“您是否希望Xcode在Project重命名和类似操作之前进行自动快照?”。单击“禁用”或“启用”。不要紧。
  9. 在Xcode中,现在在ProjDef目标(在Project Navigator中的项目ProjDef内部)中打开“构建设置”。重命名* -Info.plist和* -Prefix.pch文件的文件夹名和文件名,以包含ProjDef而不是ProjAbc。

  10. 在Xcode中的Project Navigator中,在ProjDef虚拟源文件夹中的“ Supporting Files”中,还要再次将* -Info.plist和* -Prefix.pch文件重命名为包含ProjDef而不是ProjAbc

  11. 在Xcode菜单中,按Product / Scheme / Manage Schemes ...(或在Xcode左上方的方案栏中单击“ ProjAbc“>方案名称,然后按” Manage Schemes ...“),然后在对话框中重命名Scheme from ProjAbc到ProjDef,然后按“确定”按钮。如果项目名称由单个单词组成,则可以立即运行它!

  12. 在Xcode中,编辑Supporting Files / *-Prefix.pch文件中的顶部注释行,然后用ProjDef替换ProjAbc(2次)。当然,更正此注释是可选的。

  13. 退出Xcode。

  14. 在Finder中,指向ProjDef.xcodeproj并在文本编辑器中将其打开。(或者在TextWrangler.app中将其打开,或者右键单击并在弹出菜单中按“显示包内容”,然后在TextEdit.app中编辑文件project.pbxproj)。

  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再次更改Core Data时),或者如果您使用的是Core Data的旧版本,请仔细查看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和其他代码中的内容)。切勿使用实时应用程序执行此操作 -否则,请确保在执行此操作时正确迁移核心数据。

0

如果您在项目中拥有源项目的旧参考,则在复制项目时(每次更改都会影响到两个项目),此处提供解决方案

  • 来自源项目的复制项目
  • 重命名中断参考问题的源项目的源文件夹。
  • 在复制过程中,所有内容变为红色,选择您当前的项目文件夹。(屏幕快照以stackoverflow的绿色对勾表示)

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.