6

我完全不知道我做了什么导致这个:自从我大约一个月前开始使用 XCode 以来第二次(几年前上完一堂课后我第一次认真使用它)我尝试运行我的项目接下来我知道我有错误,因为我有重复的引用。我查看了项目,似乎我项目中的大多数文件都重复了自己,但是我发现它们不是重复的文件,只是重复的引用。今天我第一次尝试在真正的 iPhone 上构建时发生了这种情况,但几周前我在使用模拟器时也发生了这种情况。我也不记得做过任何不寻常的事情。我已经构建和测试了这个项目可能 100 多次,通常一切正常。我第一次能够修复它,但我认为这次我让它变得更糟,并且可能会将文件添加回一个新项目。我的同事也提到了这件事发生在他身上(他对 xcode 的经验和我差不多)。他告诉我,他最终得到了嵌套在文件夹(组?)中的文件,这些文件夹嵌套在大约 20 深的其他文件夹中。

我的问题是:有谁知道我可能做了什么导致这种情况。我真的很想在将来避免这个问题,因为事实证明它非常令人头疼。任何建议将不胜感激。

ETA xcode 版本 4.6.2(可能是第一次发生时的早期版本)

4

4 回答 4

9

试试这个:

  1. 突出显示所有重复的文件
  2. 右键单击其中一个文件,然后按“删除”
  3. 当提示选择哪个删除选项时,单击“删除参考”
于 2013-05-21T22:19:19.610 回答
2

您还要求“任何建议”。如果你还没有在你的 Xcode 项目中使用 git 源代码控制,现在就开始吧。您可以更早地发现许多这样的错误,并使用 git 更轻松地修复它们。

当您将文件添加为副本时,Xcode 项目导航器会以 A 显示添加的文件,并以 M 显示修改的文件。

修改和添加的文件

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

在封闭的组文件夹中添加了文件副本

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

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

放弃更改

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

SourceTree,一个 git 的 gui

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

参考:

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

于 2013-05-28T17:12:13.753 回答
0

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

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

于 2013-08-15T15:48:17.357 回答
0

当我导入文件时,这发生在我身上。突然间,我有了两个嵌套目录,其中包含我所有文件的副本。编译器抱怨重复的类。

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

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

2:打开'Compile Sources'手风琴条目。(这使您可以查看编译过程中正在使用哪些文件。)

3:在此处找到任何重复项并将其删除。(在这个阶段你的项目应该再次编译。)

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

5:你应该注意到副本变红了。选择它并点击删除。(这避免了从“编译源”中删除文件的删除操作)

6:将原文件重命名为原名。

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

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

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

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

于 2015-05-19T12:30:52.073 回答