xcode复制项目中的文件

时间:2013-05-21 22:11:49

标签: ios xcode

我完全失去了我为此做了什么: 自从我在一个月前开始使用XCode以来第二次(几年前我第一次认真使用它)我尝试运行我的项目,接下来我知道我有错误,因为我有重复的引用。我看了一下这个项目,看来我项目中的大多数文件都是自己复制的,但是我发现它们不是重复文件,只是重复引用。这件事发生在我今天,当我第一次试图建立一个真正的iPhone时,但几周前我也在使用模拟器时发生了这件事。我不记得做任何不寻常的事情。我已经构建并测试了该项目可能超过100次,通常都可以。我第一次能够解决这个问题但是我觉得这次我做得更糟了,我可能会把文件添加到一个新项目中。我的同事也提到了这件事(他和我一样有很多xcode的经验)。他告诉我他最终嵌套在文件夹(组?)中的文件嵌套在大约20深的其他文件夹中。

我的问题是:有谁知道我为此做了什么。我真的想在将来避免这个问题,因为它被证明是一个非常令人头痛的问题。任何建议都将不胜感激。

E.T.A。 xcode版本4.6.2(可能是第一次发生的早期版本)

4 个答案:

答案 0 :(得分:5)

请改为尝试:

  1. 突出显示所有重复文件
  2. 右键单击其中一个文件,然后按“删除”
  3. 当系统提示您选择哪个删除选项时,请单击“删除参考”

答案 1 :(得分:2)

你也问过"任何建议"。 如果您还没有在Xcode项目中使用git源代码控制,请立即开始。 您可以发现之前的许多错误,并使用git更轻松地修复它们。

当您将文件作为副本添加时,Xcode项目导航器会显示带有A的已添加文件和带有M的已修改文件。

Modified and Added files

如果文件位于封闭的组文件夹中,则该文件夹显示A。

Added file copy inside closed group folder

如果添加没有副本的引用,项目导航器将不会显示A但MyApp.xcodeproj将显示M.

在Xcode中,您可以在提交之前放弃更改。 在下面的情况中,您将放弃对所有添加或修改的文件的更改。

discard changes

通常,您经常查看并提交更改。 使用诸如SourceTree之类的gui工具,您很有可能在提交之前发现意外更改。例如,您可以看到项目文件的更改。

SourceTree, a gui for git

如果您不小心提交了意外更改,可以稍后返回并撤消提交。 通过频繁提交,您可以更好地控制撤消哪些更改以及保留哪些更改。

参考文献:

http://www.raywenderlich.com/13771/how-to-use-git-source-control-with-xcode-in-ios-6

http://git-scm.com/doc(向下滚动查看视频)

http://www.sourcetreeapp.com

http://gitimmersion.com

答案 2 :(得分:0)

我的主图像文件夹有20个深度嵌套。如果它不是一个bug它的非常奇怪的行为。我只是支持它!然后我在finder中打开了文件夹,找到了它开始嵌套并删除它的点。

我做了重建,但我不认为Xcode甚至注意到了。它对我的应用程序的大小没有影响,因此Xcode没有在二进制文件中放置不必要的文件。

答案 3 :(得分:0)

导入文件时发生了这种情况。突然,我有两个嵌套目录,包含看起来像我所有文件的副本。编译器抱怨重复的类。

我找到了一个解决方案,但这是一个球疼和时间下沉。

1:在导航器中单击您的项目,在主视图中打开项目设置。

2:打开'Compile Sources'手风琴入口。 (这允许您查看编译过程中使用的文件。)

3:在此处查找任何重复项并删除它们。 (在此阶段,您的项目应该再次编译。)

4:在导航器视图中,慢速双击其中一个重复的文件。这应该允许您重命名它。稍微改变名称(不是扩展名)。

5:您应该注意到副本变为红色。选择它并点击删除。 (这可以避免删除操作从'编译源'中删除文件)

6:再次将原始文件重命名为原始名称。

7:从4开始重复,直到完成,或直到无聊。

8:向老板解释为什么简单的副本更改需要半天。

首先重命名所有重复的文件,然后一次删除所有重复的文件,可以优化此过程。但是,这意味着您无法测试步骤之间的成功编译,这使您可以将罪魁祸首缩小到单个文件。并且需要更多时间。

如果编译失败,请确保您需要的所有文件仍在“编译源”部分,因为此过程可能导致它们从那里丢失。编译器通常会给出关于缺少类和变量的一些合理错误,但缺少AppDelegate会产生更混乱的错误。