升级到 Xcode 4 后出现缺少文件警告

Posted

技术标签:

【中文标题】升级到 Xcode 4 后出现缺少文件警告【英文标题】:Missing file warnings showing up after upgrade to Xcode 4 【发布时间】:2011-07-14 14:51:32 【问题描述】:

我最近升级到 Xcode 4(这是一次很棒的升级),但现在我收到了一些以前没有收到的警告。我浏览了论坛和其他 SO 帖子,但没有找到解决此问题的方法。

我收到的警告是缺少文件的项目级警告。正在显示的文件已从项目导航器视图中删除(也选择从文件系统中删除)。然而,它似乎仍然以某种方式链接到项目,即使该文件不再出现在项目导航器中。

我环顾四周,没有找到如何告诉 Xcode 这些文件已经消失,停止给我警告。这是我在 Xcode4 中获得的屏幕截图,但从未在 Xcode 3 中获得。

【问题讨论】:

如果我是你,我总是将你的文件导入到你的项目中,而不是仅仅在你的磁盘上保留指向它们的链接。如果您稍后移动文件,它确实可以让您免于头痛。 【参考方案1】:

这些解决方案太难了。问题是您已经从文件系统中删除了该项目,但 SVN 仍然认为它们在那里。 从 SVN 中分离项目将起作用,删除 .svn 文件夹也是如此,但会破坏您的存储库!

打开控制台要容易得多,浏览到您的文件夹(“cd /pathToYourFolder”)并输入以下命令:

svn delete nameOfMissingFile

如果您丢失的文件的名称包含@ 字符(例如:视网膜特定图稿),请确保文件名以@ 符号结尾:

svn delete nameOfMissingFile@2x.png@

对于 GIT 存储库:

git rm nameOfMissingFile

【讨论】:

我遇到了同样的问题并通过终端解决了它:svn rm --force nameOfMissingFile 这是一个比标记为正确的答案更好的答案。从一个受 SVN 控制的项目中删除 SVN 文件夹可能是一件很痛苦的事情。最好使用SVN来解决这个问题。我按照这个答案解决了我自己的问题,但是我拥有Cornerstone的奢侈。但除此之外很酷。谢谢:) 这似乎对我不起作用。我会将文件添加回来,然后将其删除,但同样的警告仍然出现在构建中。我什至尝试将文件添加回项目然后删除它们。还是同样的问题。 它对我有用,但如果使用 svn,我首先必须在那里创建一个虚拟文件,然后才能删除。所以你必须做 touch nameOfMissingFile 然后 svn delete nameOfMissingFile --force 我还必须退出并杀死 xcode 才能解决问题。【参考方案2】:

在 XCode 4.2.+(可能在 4+)中,您可以避免手动工作和命令行:

    选择项目 Project Navigator (Command - 1) 选择文件 - 源代码管理 - 提交菜单 在左侧窗格中,顶部有三个图标,选择中间的一个 - 文件视图 您将看到所有丢失文件的列表 选择所有这些并右键单击 - 放弃更改。这将从 SVN 服务器恢复所有已删除的文件并将它们放在本地 SVN 文件夹中 将这些文件拖放到 XCode 项目中(选择 Sort-Date Modified in Finder 即可轻松找到它们) 通过 XCode 正确删除这些文件(选择文件并选择右键单击删除) 提交项目

就是这样:)

所有那些讨厌的警告都消失了!

Xcode 6+ 的附加功能: 选择文件视图“中间图标”后 - 您可以单击左侧的复选框,这将在您下次提交时将它们标记为 SVN 已删除!

【讨论】:

只需要到第 5 步。我实际上并没有 SVN 中的文件。 我重构了一个项目,这影响了另一个项目的一些共享代码,XCode 抱怨缺少与 SVN 相关的文件。在手动浏览项目源 xml 并一无所获后,我花了一段时间才弄清楚这是一个 SVN 问题。【参考方案3】:

在 Xcode5 和 Xcode6 中,以下步骤对我有用

Xcode -> Preferences -> Source Control -> uncheck Enable Source Control

然后

Xcode -> Preferences -> Source Control -> check Enable Source Control

【讨论】:

在 Xcode 8.3.2 上,这工作了大约十分钟,然后所有的警告都回来了 :(【参考方案4】:

它与您项目中的 .svn 隐藏文件夹有关。

我通过从 svn 中分离项目解决了这个问题。

一个。打开终端并输入以下命令:

defaults write com.apple.finder AppleShowAllFiles TRUE


killall Finder

这将允许您查看项目中的 .svn 文件夹

b.删除项目文件夹/子文件夹中的每个 .svn 文件夹

c。重新启用隐藏文件:

defaults write com.apple.finder AppleShowAllFiles FALSE

killall Finder

d。现在您的项目与 svn 分离,您不再遇到构建问题。

e。将您的项目重新添加到 svn 或其他。

我自己也是一个初学者,这是我处理这个问题的方式,所以我不确定这是不是最好的方式。总之,问题解决了。

【讨论】:

搞乱 SVN 隐藏文件夹和文件不是一个好主意,你最终可能会陷入混乱的 SVN 中。最好使用 svn delete 命令来整理丢失的文件。 这是我最终选择的路径。是的,它会删除所有保存的 SVN 信息,但这实际上是其他人放入我不想保留的特定项目中的内容。我想重新开始,并不关心维护特定的版本。 我只是通过重新启动它来“killall Finder”。现在问题消失了。谢谢【参考方案5】:

这对我有用:

File -> Source Control -> Hide Working Copy Status

然后

File -> Source Control -> Show Working Copy Status

【讨论】:

【参考方案6】:

我通过以下方式解决了它:

    检查丢失文件的路径。 在项目目录中的适当位置创建缺失文件 使用“将文件添加到“项目””将它们添加到您的项目中并仅创建引用(不要复制文件) 此时警告应该会消失。 从 Xcode 中删除文件,确保单击“删除”而不是默认的“仅删除引用” 大功告成。

【讨论】:

【参考方案7】:

我遇到了这个错误,除了在该位置创建一个空文件然后删除它之外,没有其他方法可以解决它。它发生在我从项目中删除的文件中,并且手动清理、构建、删除派生数据目录也不起作用。我认为这是一个错误,如果它发生在多个文件上,可能会非常痛苦。

【讨论】:

伤心,希望有一个更简单的方法来解决这个问题。我有大约 20 个文件,所以创建然后删除会很痛苦。【参考方案8】:

我也遇到了这个问题,正如 user151215 所描述的那样,它是由于 .svn 文件夹造成的。

我有一个旧的 .svn 文件夹,不在项目本身中,而是在项目父文件夹中。

有问题的 .svn 文件夹将有一个条目文件,其中包含您丢失的文件。因此,您可以使用终端并搜索丢失的文件名字符串,例如grep -lir BagController.m yourRootDevDir/*

比在finder中启用隐藏文件更简单,只需使用终端即可。 cd 到相关目录,然后 mv .svn ~/.Trash

希望这会有所帮助!

【讨论】:

【参考方案9】:

进入相应目录并运行:

svn revert fileName

【讨论】:

【参考方案10】:

我使用以下方法来处理这个问题:

启动终端并 cd 到项目目录。 (例如:cd /Users/Mauro/Src/Pippero-1.2/)

然后输入以下命令:

find . -name .svn -exec rm -rf   \;

该命令将递归搜索名为 .svn 的文件(和文件夹)并删除它们

【讨论】:

这对我不起作用,但是进入每个目录并删除单个 .svn 文件夹可以。对你来说太重要了,我的男人!【参考方案11】:

在 Xcode 中禁用 SVN 可以防止这些问题(假设您正在使用另一个 SVN 工具管理您的存储库)。看到这个问题:

Can you disable version control integration in Xcode 4?

显然,如果您确实想要将 SVN 用于其他 Xcode 项目,这可能不切实际。

【讨论】:

【参考方案12】:

我正在使用 svn 并设法解决了这个问题

svn delete pathToMissingFile

这将删除丢失文件的本地 svn 副本以及远程存储库中的副本。

svn revert pathToMissingFile

这将丢弃丢失文件的更改,这意味着将丢失的文件放回原来的位置。

【讨论】:

【参考方案13】:

以上所有方法都无法解决我遇到的同类问题。做了一些搜索,我了解到我遇到的问题与 SVN 冲突有关。

使用命令行发现有冲突:

svn status

然后必须解决所有冲突的文件

svn resolved filename1 filename2 ...

一旦冲突解决,Xcode 中的警告就会消失

【讨论】:

【参考方案14】:
    提交并推送您的更改。 重启 Xcode。

【讨论】:

【参考方案15】:

很简单,

Xcode -> Preferences -> Source Control -> uncheck Enable Source Control

别忘了cmd+shift+k

【讨论】:

【参考方案16】:

构建后按 Cmd + 7 并选择最新的构建操作。它看起来有点像旧的 Xcode 吗? :)

【讨论】:

是的,它看起来像旧 XCode,但它并没有解决新 XCode 说我丢失文件的问题。我喜欢这个视图,但这似乎只是掩盖了 XCode 的问题。【参考方案17】:

就我而言

    我只是打开 SvnX。 所有丢失的文件都标记为红色。选择并删除它们。 然后所有 Xcode 警告都消失了。

【讨论】:

【参考方案18】:

Alex 的回答解决了我丢失文件的问题。

我还有一个问题(虽然它与丢失的文件无关,但我觉得这是一个更好的话题)

    我需要将一组图像复制到我的项目中。 我只是创建了一个组(尽管我知道该组不映射到物理文件夹)并将图像拖到组中(选择“复制到..”选项)。 SVN 状态全部显示为“A”。 现在,当我进入实际文件系统时,我发现所有图像都复制到了我的项目的根文件夹中。由于看起来不太好,我在项目的 images 文件夹中创建了一个物理文件夹,并将所有添加的图像复制到那里。 SVN 然后将所有文件显示为红色。 我删除了所有红色文件的引用。 使用“添加文件”选项,然后我从新创建的文件夹中添加了图像。 现在 SVN 无法将文件状态显示为“A”,我无法签入。 尝试了许多步骤,例如将它们从不同的文件夹中重新添加到垃圾箱等,但没有任何运气。

我通过直接进入存储库来解决这个问题,在 images 下创建一个新目录,以便物理文件夹现在位于 SVN 服务器中

然后我更新了源代码,并在我的工作副本中获取了新创建的目录(尽管它没有添加到项目中)。

然后我将图像复制到该目录并使用“添加文件”选项将它们添加到项目中,这使我恢复了“A”状态并且我能够签入文件。

只是想分享这个.....因为我花了很多时间。

-anoop

【讨论】:

在这种情况下,转到终端并转到项目的根目录。使用“svn mkdir name_of_the_folder”创建文件夹。使用 Finder 将文件从 name_of_the_folder 拖放到您的项目(或它自己的文件夹以添加所有文件)。问题是当您创建没有“svn mkdir”文件夹的文件夹时没有添加到SVN。【参考方案19】:

不要直接删除 .xcode 文件夹中的文件。从 xcode 项目导航器中删除文件。 (右键单击该文件并选择移至垃圾箱)。

现在,要解决此问题,请在同一位置添加相同的文件。并从项目导航器中删除。

【讨论】:

【参考方案20】:

我不需要做任何事情。我提交了我的代码并将其推送。关闭 XCODE。再次将其拉下,一切正常。

【讨论】:

【参考方案21】:

概述:

在我的情况下,在以下文件夹路径 /folder1/folder2 中有一个名为 Sample 的 xcode 项目。

/folder1/folder2/Sample/ 内有一个 .git 文件,这是预期的。

根本原因:

在父目录 (/folder1) 中有另一个 .git 文件导致了该问题。文件夹可能已被删除,留下 .git 文件

解决方案

rm -rf /folder1/.git

线索

如果将您的项目移动到一个全新的位置可以解决层次结构上的父目录中没有.git 文件的问题,那么这就是上述解决方案可以工作的线索。

【讨论】:

以上是关于升级到 Xcode 4 后出现缺少文件警告的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 - 缺少文件警告

升级到 Xcode 8 并将语法从 swift 2.3 转换为 swift 3.0 后文件丢失警告

升级到 Xcode7 后现有项目中的警告消息

升级到 Xcode 3.2 后缺少框架

升级到 Xcode 3.2.5 后“缺少基本 SDK”

使用 setDataSource 升级到 Xcode 4.6 后出现编译器错误