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

我知道如何在 Xcode 4中重命名项目,但是如何重命名源文件夹呢?问题是,在 Xcode 重命名项目,只能在 Xcode 中重命名(尽管与以前相比,这是一个进步)——但是我不知道为什么 Xcode 没有在文件系统中重命名文件夹。

40776 次浏览

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

如果你不得不这样做,那么下面可能就是它了——我从来没有让它工作过,最终创建了一个新项目,并开始在现有文件中进行全面复制。Xcode 真是..。它有很多非生产性的东西,比如还可以尝试将文件从“名称”重命名为“名称”。玩得开心。

我找到了答案或者如何解决这个问题: 右键单击“ Show Package Content”打开 pbxproj 文件,在那里编辑 project.pbxproj 文件——你必须重命名一个名为 path 的引用和其他一些东西——只需搜索添加的文件夹名称“/”。

That is it. Hope it helps some one.

我做过很多次了:

  • 通过单击然后在 Xcode 项目导航器中编辑标题来重命名项目。
  • 关闭 Xcode。
  • 重命名源文件夹。
  • 在 Finder 中,使用任何文本编辑器打开项目包中的 .pbxproj文件(上下文菜单“显示包内容”)。
  • 使用新的文件夹名称搜索并替换 原始文件夹名称的任何匹配项。
  • Save the file.
  • 打开 Xcode 项目。

下面是如何在 XCode4中有效地重命名项目(包括文件夹) :

  1. 在 XCode 中完全关闭所有打开的项目,以防止出现任何问题
  2. 将有问题的项目复制到新的文件夹(重要事项: 保留旧项目的备份)
  3. Open the Project
  4. Rename the Project itself in XCode4 (double click on the project name), change the name and follow the steps (yes to everything)
  5. Go to product, manage schemes and rename the scheme (double click on the scheme name)
  6. 关闭您的项目(确保完全关闭,否则下一步将无法工作)
  7. 在 Finder 中转到 Project 文件夹,右键单击。Xcodeproj 文件,然后选择“显示包内容”选项
  8. 然后右键单击. pbxproj 文件并用 TextEdit 打开它
  9. 替换项目所在的文件夹名称的所有匹配项(新项目名称的旧项目名称)
  10. Save the file
  11. 再次打开项目并构建它!

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

改变这一点:

enter image description here

这样说:

enter image description here

STEPS:

//在做任何事情之前,请在 Finder 中备份项目!

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

以上所有步骤都是直截了当的,没有副作用 // //现在到了棘手的部分: 在 Finder 中重命名内部文件夹(图像中的中间列)。Xcodeproj)

  • Rename the inner folder in Finder while keeping Xcode closed
  • 右键单击.xcodeproj,选择“显示包内容”
  • 用 Mac TextEdit 打开. pbxproj 文件
  • 搜索并将所有“ Play”替换为“ Play2”。要确保一切正常,请单击搜索栏左端的箭头并修改搜索属性。将“包含”更改为“完整单词”,并取消选中“忽略大小写”
  • 保存.pbxproj 文件
  • 打开 Xcode 项目并运行

Here is another issue that you should be aware of while replacing values in your *.pbxproj file. If your old folder name was FooBar you will have an entry in your *.pbxproj file that looks like this:

Path = FooBar

假设您的新文件夹名为 Foo Bar。也就是说,你引入了一个空间。那么,这条线应该成为

Path = “ Foo Bar”

如果只执行一个简单的查找和替换操作,结果将是一个 * 。Xcode 无法解析的 pbxproj 文件。如果您的新文件夹名称有空格,而旧名称没有空格,请确保包含双引号。

你可以在 Xcode 内部完成这项工作,而不需要在文本编辑器中手动编辑 pbxproj 文件!

方法如下:

  1. 在 Finder 中重命名源文件夹。这最初会破坏项目,因为 Xcode 不会自动检测虚拟(黄色)项目文件夹指向的真实文件夹何时更改,所以该文件夹中的所有文件在 Xcode 都会变成红色。别担心,我们会在第三步解决的。

  2. 在 Xcode,点击左侧边栏中的虚拟文件夹(现在已经坏掉了) ,然后重命名它,使其与 Finder 中的名称相匹配(实际上你可以随意命名它,或者根本不重命名它,但那将是疯狂的)。这不会修复文件夹中的红色文件,但是没关系。

  3. 在 Xcode 的右边栏,点击下面截图中的图标,弹出一个文件对话框。选择先前重命名的文件夹。这将重新关联虚拟文件夹与磁盘上的真实文件夹,并将自动修复到所有文件内的链接。

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

好了!

enter image description here

编辑: 这个选项在 Xcode 5中仍然存在,但是默认情况下是隐藏的。要显示它,请单击“文本设置”面板上方检查器中的“标识和类型”薄标头来展开它。

在审视了上面的各种答案并试验了自己之后,我为自己总结一下。 Let's assume the current project name is ProjAbc and you want to rename it to ProjDef:

  1. 退出该项目的 Xcode。

  2. In Finder, Duplicate the folder ABOVE ProjAbc.xcodeproj for backup.

  3. 在 Finder 中,如果您觉得需要为 ABOVE ProjAbc.xcodeproj 文件夹重命名以适应新的项目名称,那么可以自由地为它重命名。

  4. In Finder, Rename the source files folder parallel to ProjAbc.xcodeproj from ProjAbc to ProjDef

  5. 打开 ProjAbc.xcodeproj 的 Xcode (在 ProjectNavigator 中,虚拟源文件夹 ProjAbc 中的所有文件都是红色)。

  6. 在 Xcode,点击左边栏的 Project Navigator 中的虚拟文件夹(现在已经破碎了) ,然后重命名它以匹配 Finder-ProjDef 中的名称。这还不能修复文件夹中的红色文件,但是没关系。

  7. 在 Xcode,(仍然选择左侧边栏中的虚拟文件夹)在右侧边栏中,在文件检查器中,点击下面截图中显示的图标,打开一个文件对话框。在文件对话框中,选择先前重命名的文件夹(ProjDef)。这将重新关联虚拟文件夹与磁盘上的真实文件夹,并将自动修复到所有文件内的链接。 Picture shows where to click the Folder icon in File inspector

  8. 在 Xcode,在 ProjectNavigator 中,单击 ProjAbc 项目名称,并将其重命名为 ProjDef。

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

  10. 在 Xcode,在 Project Navigator 中,在 ProjDef 虚拟源文件夹中,在“支持文件”中,同样重命名 *-Info.plist 和 *-Prefix.pch 文件以包含 ProjDef 而不是 ProjAbc

  11. 在 Xcode Menu,按“产品/方案/管理方案...”(或点击 Xcode 顶部左侧的“方案栏”中的“ ProjAbc”> “方案名称”,然后按“管理方案...”) ,在对话框中将“方案”从“ ProjAbc”重命名为“ ProjDef”,然后按“确定”按钮。如果项目名是由单个单词组成的,那么您现在就可以运行它!

  12. 在 Xcode,编辑“支持文件”/*-Prefix.pch 文件中的顶部注释行,并将 ProjAbc 替换为 ProjDef (2次)。当然,更正这条评论是可选的。

  13. 退出 Xcode。

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

  15. 在文本编辑器中,搜索应该出现一次的“ ProjAbc”(整个 Word,匹配案例)(在段落中:/* 开始 PBXNativeTarget 部分 */在行中: productName = ProjAbc;)并将其替换为“ ProjDef”。事实上,项目无论如何都可以运行!所以这个步骤是可选的。

  16. 如果项目名由2个或更多单独的单词组成,如“ ProjDef Geh”,那么您必须执行下面的步骤: 搜索对虚拟源文件文件夹的 Finder 文件夹的引用-

    • 搜索行: path = ProjDef Geh;
    • 它将在/* ProjDef Geh */段落中出现一次
    • 将其替换为: path = “ ProjDef Geh”;
  17. 从文本编辑器中保存,并退出文本编辑器。

  18. 就是这样。如上所述,如果项目名由单个单词组成,您可以在步骤11的末尾运行。

我发现以上的答案非常有用,特别是尼克 · 洛克伍德的答案。

我只是在 Xcode 8中重命名了几个文件夹,然后又遇到了两个问题: A) "missing from working copy errors" B) 核心数据崩溃.

如何解决这两个问题:

A) "工作拷贝错误中遗漏"

我发现下面的答案非常有用: Swift 3 / Xcode 8 Upgrade - 100's of DerivedData files missing from working copy errors

基本上 Xcode 8具有严格的源代码控制,这可能导致上述错误:

  1. Clean Xcode derived data.
  2. Go to Source Control and click Refresh Status.
  3. Go to Source Control and click Commit; select all the files on the left sidebar of the commit menu when committing (right click -> Select All).
  4. 你可能会得到一个错误。
  5. Close the Commit menu.
  6. 刷新状态。
  7. 通过退出 Xcode 关闭项目。
  8. 重新打开项目,刷新状态,再次提交。
  9. This time the commit should work.
  10. 单击 Project-> Clean。

I'm assuming that you have already enabled Source Control. If you haven't, or if you get stuck following my instructions, just follow the more detailed instructions in the link provided.

B) 核心数据崩溃

重命名文件夹有时会搞砸核心数据。有几个可能的原因可以解释为什么会这样,下面是我可以提出的一些解决办法:

  1. AppDelegate型号名称不正确。我的情况就是这样。转到您的应用程序代理并找到 let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME")。确保名称正确。

    在未来(本文发表几年后,当苹果再次更改核心数据时) ,或者如果你使用的是旧版本的核心数据,请仔细看看 Appgenerate。可能有什么奇怪的东西在扰乱你的核心数据。

  2. Incorrect model name in Xcdatamodeld. Go to Finder and open your .xcdatamodeld in a text editor.

检查以下项目:

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

More detail here: 核心数据模型文件不在重命名时加载

  1. 如果上述两种方法都不起作用,尝试1)删除你的实体,然后添加另一个相同的实体; 或者2)删除你的 xcdatamodeld,然后添加另一个相同的数据模型(并确保新的 xcdatamodeld 的名称与你的应用委托和其他代码中的名称相匹配)。永远不要在活动应用程序中这样做-或者如果你这样做,确保正确地迁移你的核心数据,同时这样做。

如果在项目中有源项目的旧引用,则在公布项目时(对两个项目都有影响的每个更改) 这就是解决办法

  • 从源项目发布项目
  • 重命名中断引用问题的源项目的源文件夹。
  • 在公布项目中一切都变红选择您当前的项目文件夹。(屏幕截图显示在堆栈溢出的绿色蜱答案)

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