【问题标题】:Xcode - Dragged in same image twice and it is listed twice, why? Is deleting one of these images a risk?Xcode - 在同一个图像中拖了两次,它被列出了两次,为什么?删除其中一张图片有风险吗?
【发布时间】:2013-08-17 21:58:42
【问题描述】:

我注意到,如果您将同一图像拖入 Xcode 两次,则它会在项目导航器视图中复制*。换句话说,它被列出了两次。

两个问题:

  1. 为什么会发生这种情况? - 不应该有警告吗?
  2. 如果我删除对这些文件之一的引用** 以使项目导航器视图只列出一次图像,这会带来某种风险吗?我没有删除对同一文件的引用吗?*

*Xcode 中最左边的列通常包含项目中的文件列表

**通过右键单击其中一个图像文件 -> 然后点击删除选项 -> 然后选择“删除参考”

***删除引用仅删除其中一个文件,另一个文件保留。

【问题讨论】:

  • 请查看我的回答以真正了解您的情况。作为一名 iOS 开发人员,了解背后的原因很重要。祝你好运!
  • 请注意,如果您很快发现错误,您可以使用 Ctrl-Z 来反转操作。

标签: ios xcode


【解决方案1】:

项目文件包含对文件的引用列表。这些文件可能在您的本地项目文件夹中,也可能在其他任何地方。

将同一个文件拖入两次,可以选择复制到项目文件夹,第二次会报错。同一个文件夹中不能有两个同名的文件。但是对文件的引用没有这样的限制。它们只是项目文件列表中的条目。

因此,如果您拖动文件而不移动它,您只是在创建一个引用。

是的,当您右键单击其中一个引用并选择删除时,您可以选择仅删除引用,或者将引用的文件也移动到垃圾箱。仅删除参考是非常安全的。该文件将保持不变,并且对该文件的其他引用仍然有效。

【讨论】:

  • 很好的答案,如果您想进一步研究这个问题,我建议您使用文本编辑器打开您的 xcode 项目并查看差异。应该有一些你可以看到变化的参考标签:)
  • 可以肯定的是,可以在项目导航器中的文件上人民币并选择“在Finder中显示”。这将显示包含该文件的目录,您可以查看是否有一个或两个。此外,您可以对导航器中的两个“重复”文件执行此操作,以查看它们是指同一个文件还是不同的文件。
【解决方案2】:

要了解为什么会发生这种情况,您需要了解添加文件时的选项。将图像或文件添加到项目时,您可以启用或禁用以下选项:

将项目复制到目标组的文件夹(如果需要)

那么这到底是什么意思呢?通过选择(选中)此选项,您将原始文件的副本复制到 Xcode 项目组文件夹中。现在,当您从源调用文件时,您将引用复制到项目组文件夹中的文件。原始文件,无论在哪里(桌面)都保持不变。

注意 - “如果需要”限定词是什么意思?

如果该文件已存在于项目组文件夹中,则该文件不会被复制到该文件夹​​中。只需将引用添加到项目导航器中。如果这没有意义,那么我会给你一个实际的例子。假设您创建了一堆图像并将它们直接添加到项目文件夹中。我的意思是你使用finder(而不是通过Xcode)将它们拖放到Xcode项目文件夹中。此时您已将文件添加到项目中,但如果您打开 Xcode 项目,您会注意到在导航器中看不到对该文件的引用。所以这是一个 if required 限定符将被触发的情况。您仍然需要像往常一样通过 Xcode 添加对文件的引用。但这一次只是进行了引用,没有文件被复制到项目文件夹中,因为它已经存在。

如果不选中该选项会怎样?

Xcode 将创建对文件的引用,但不会创建文件的副本并将其添加到项目中。 Xcode 项目中的引用将指向文件的原始位置,无论它在哪里。除非您知道原因并且需要这样做,否则不建议这样做,因为如果您不小心删除了原始文件,则对该文件的引用将被破坏。你会知道什么时候会发生这种情况,因为 Xcode 中的文件引用会显示为红色。

现在回到你的情况。在您的情况下发生的情况是您将文件添加到项目中而未选中该选项。这将在 Xcode 中创建对文件的引用,并将文件实际移动到项目中。第二次将其添加到项目中时,您正在创建对该文件的新引用,但您实际上并未执行任何文件操作,例如移动或复制,因此不会出现错误。

我建议始终选中上面的选项。这样,您将知道是否将重复文件添加到项目中。此外,您将来也不会破坏对您文件的任何引用。希望这可以帮助您进一步了解背后的原因。

【讨论】:

  • 感谢您提供的详细信息。但是,如果我拖动一个已经在该项目的 xCode 文件夹中并且已经被引用的文件,xCode 不会给我警告。它只是列出了两次。这似乎与您在最后一段第二段中的观点相矛盾。我正在使用 xCode 4.6.2
  • 我编辑了答案的底部。那可能是因为您添加了未选中该选项的文件。如果您在未选中该选项的情况下添加文件,它只会添加对该文件的引用。它不会在任何地方创建副本或添加新文件。因此不会引发错误。从技术上讲,您可以根据需要多次添加引用,因为它实际上并没有执行任何文件操作。我知道这不是一件常见的事情,但这就是它背后的原因。
  • 如果需要,我已经检查了添加文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多