“找不到任何有关名为 ViewController 的类的信息”

自从我开始使用 Xcode (4.6.3)以来,这个 bug 一直让我抓狂。每当我尝试将一个 Storyboard 条目链接到我的代码时,我都会得到这个错误:

找不到名为 ViewController 的类的任何信息。

这种情况在自定义类中也会发生:

  • 删除委托数据。
  • 移除并重新添加类。
  • 重启 Xcode。
  • 重新安装 Xcode。

无论类是什么,我都不能通过 ctrl-drag 在我的任何项目中创建连接。一个全新的模板应用程序也会出现同样的问题。如果我手动输入代码,然后 ctrl 拖动,我可以建立一个工作连接,但我不能自动添加它。到目前为止,我在网上找不到任何有用的东西。有什么建议吗?

93339 次浏览

我会试着重新制作。M 和 M。H 文件,并给它们一个原始的名称,而不是像“ ViewController”那样的通用名称。尝试按照您希望该文件执行的内容进行更多操作,并以 View Controller (即“ PizzaDecoraterViewController”)结尾

然后选择要连接到这些文件的 ViewController。确保您选择的是 ViewController,而不仅仅是其中的一个对象。点击底部的黑条(有“第一响应者”和“退出”图标的那个)。整个 ViewController 应该是蓝色的。然后转到 Identity 检查器中的 Custom Class 部分,您应该会在第一个字段中看到一个灰色的“ UIViewController”。在该字段中,键入。或者。M 文件,您希望它连接到(开始键入 PizzaDecorator... ,它应该做一个小的自动完成的事情)。然后按回车键。

打开“助理编辑器”时,请确保要拖放到的文件实际上是正确的文件。

如果你已经做了以上所说的一切,那么它应该工作。

选择 StoryBoard 中的 ViewController,删除 右手面板/“ Customer class”/“ class”中的当前值,然后重新添加控件类(类型: “ SampleViewController”...) ,输入。 这对我有用

对我来说,解决这个问题的方法实际上是从项目中删除类。

步骤:

  1. 在项目文件资源管理器(左面板)中找到该类并右键单击-> Delete
  2. 删除引用 (不要移动到回收站,因为你将永远失去这个类)
  3. 右键单击包含 class-> Add files to..。
  4. 在文件系统中查找刚刚删除的类

这似乎迫使 Xcode 将类链接回故事板。

注意: 对我来说,没有的工作如下:

  • 关闭 Xcode
  • 清理项目
  • 从故事板中删除类名并重新输入它

我认为这是苹果公司的一个漏洞

当我评论@ChrisHarrison 的回答时,这些东西对我来说不起作用,但是删除派生数据就像我在 https://stackoverflow.com/a/16182672/1449799中删除派生数据一样起作用

如果还有人对此感到沮丧,这里有一个让事情运转起来的诀窍。

我所做的是手动输入一个插座到我的类中,例如: @IBOutlet weak var someView: UIView!,并将 来自代码拖动到 IB 或故事板中的视图中。在此之后,我能够从 IB/故事板拖动到我的类建立连接,助理编辑识别“自动”类等。.

屡试不爽。

到目前为止,我不得不把两个答案结合起来:

  1. 从故事板中删除自定义类名。

(点击故事板中视图控制器左上角的黄色按钮-> 进入身份检查器(选项 + 命令 + 3)-> 删除顶部的自定义类名)

  1. 删除对视图控制器文件的引用。

(右键单击文件-> 删除-> 删除引用)

  1. 将视图控制器文件添加回项目。

(右键单击文件所在的文件夹-> “ Add file to [ project ]”)

  1. 将自定义类名添加回故事板。

删除文件(只有引用)并再次添加文件。

在我的案例中,起作用的事情(有点奇怪,但起作用了)如下:

尝试添加数据源(例如。ViewController 的扩展,如 UITableViewDataSource)。Xcode 将尝试重新加载 ViewController。然后,我编写了协议的一些方法(在开始的时候,Xcode 没有自动完成这些方法,而是手工编写出来) ,然后我添加了 IBOutlet,最后,我删除了数据源。

例如:

class TestViewController:UIViewController{
// This viewController presents “Could not find any information for  class named ViewController”
}


extension TestViewController:UITableViewDataSource{
//Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
}

对我来说,我指定的自定义类的视图无法被 Interface Builder 编译。标记为 @IBDesignable

删除 @IBDesignable,然后添加我的插座,然后标记为 @IBDesignable解决了我的问题。

我尝试了所有这些答案,对我来说问题是 Xcode 无法索引文件。我通过简单地退出 Xcode 并重新打开项目来解决这个问题。当然,我是在尝试了以上所有解决方案之后才这样做的

只需尝试删除该项目的派生数据

对我来说,将它们从右栏的目标成员中删除并再次添加它们就可以解决这个问题 enter image description here

我试了所有的方法,但都不管用,所以对我来说,管用的是:

  • 清理“生成”文件夹和项目。
  • 开放项目(视窗-> 项目)
  • 在列表中找到您的项目并删除派生数据
  • 关闭 Xcode
  • 重新启动计算机(不选择重新打开打开的窗口)
  • 运行 Xcode
  • 工作!

我的所有视图控制器都没有被识别,所以删除所有文件和重新添加不是一个选项,因为这是一个大项目。

根据我的测试经验,如果你删除一个在 Xcode 关联的类,然后再次添加文件,那么这个问题就会发生。

如果人们尝试了上面的方法,但仍然不能正常工作,那么对我有效的奇怪技巧就是在一大块空白中添加插座。如果没有其他直接高于或低于你添加的行。奇怪,但是成功了!

试试这个

rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable
defaults write com.apple.dt.Xcode IDEIndexEnable 1

下面的步骤对我有用,希望对你也有用

1-关闭 Xcode 后需要重新打开项目。

等待索引项目文件

3-检查它是否工作或不

4-如果仍然不工作,按照步骤5,如果不为你高兴:)

清理和建立你的项目目标

enter image description here

产品 > 清洁(命令-移动-K)为我修复它!

从 finder Xcode 检查是否关闭。

强制退出 Xcode 并重新启动。

产品 > 清洁

对我来说,这是因为 Xcode 索引过程已经停止运行,重新启动我的 Mac 修复了这个问题。

通常当这种情况发生在我身上时,我只是还没有为类保存代码。只要跳转到代码并点击 cmd + s,它通常就能正确地修复问题。

好吧,大家几乎看到了所有的顶级答案,但没有一个对我有用。

所以对我有效的方法是:

  1. 从 Xcode 项目中复制 Derived Data地址。 这可以通过以下方法实现:

Xcode -> Preferences -> Location Tab -> Derived Data

  1. Close Xcode

  2. 现在转到派生数据位置并删除那里的项目文件夹。

现在打开 Xcode,瞧!

有时候 Xcode 会因为 VC 没有引用类文件而导致这种情况,解决这个问题的简单方法是:

按给定的方式手动写入属性。

class YourClassName{


@IBOutlet weak var YourTableName: UITableView!


}

这将使一个空的链接符号 在@IBOutlet 之前,打开您的项目在助理编辑器,然后单击链接符号 < img src = “ https://i.stack.imgur.com/2WHzg.png”alt = “ enter image description here”> < img src = “ https://i.stack.imgur.com/2WHzg.png”alt = “在这里输入图像描述”> ,并拖动到您想要连接的视图(我已经连接到 TableView)。就是这样。享受快乐编码! ! !

对我有效的方法是,不是将连接从按钮拖到代码,而是:

  1. 单击所需的故事板项。
  2. 打开连接检查器(右面板)
  3. 从 + 圈拖动到代码区域。 像这样:

在我以这种方式链接我的代码之后,它就能正常工作了。

我在2017年4月用 Xcode 8遇到了这个问题

简单地通过代码创建一个出口,然后编译修复它。例如:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

你一定很喜欢 Xcode。

编辑: 仍然发生在 Xcode 9上

这是我为解决这个问题所做的最简单的步骤。

  1. 我负责清理项目
  2. 在视图控制器中拖动一个新按钮。
  3. 建立项目。
  4. 将新拖动的按钮连接到类(插座或操作)。
  5. 然后瞧! ! ! 其他插座现在可以连接到类了!

对我来说,以下方法奏效了:

  1. 执行“干净”和“干净构建文件夹”(按“产品”菜单上的“选项”可以获得“干净构建文件夹”命令

  2. 停止 Xcode

  3. 在终端中,转到派生数据文件夹:

    (/用户//库/开发者/Xcode/衍生数据)

删除项目的派生数据目录。

  1. 在空中挥舞死鸡

  2. 启动 Xcode

只需要清理和重建项目。

上面的步骤对我来说都不起作用,但是我想我可能已经发现了这个问题。至少对我来说是这样的,而且在 Xcode 这不是一个错误。

当在助理编辑器中查看包含 viewController 代码的窗口顶部时。右边第三个选项可能是“手动”,但应该是“自动”。一旦我改变了这一点,问题就解决了!

转到项目文件夹并删除派生数据文件夹

如果你不能找到派生的数据,去查找器和去

 ~/Library/Developer/XCode/DerivedData/"project"

(将“ project”名称替换为项目名称)

我只要重启 Xcode 就行了。

瞄准目标!

我用 Xib 添加了一个新的类,我开始看到这个问题,我花了很多时间查看这里的答案,看看是否有任何问题对它有影响。

碰巧的是,我的工作空间中有多个目标,我经常不得不在它们之间切换。

事实证明,添加新文件将在 Xcode 引发重新索引。但是如果您指向了错误的目标,那么索引就可能毫无意义,并且在拖动连接 Xcode 时将无法找到您的类。

简而言之

第一步。

Target Seledction

确保您有正确的目标设置,以便索引有意义。

这对我很有效:

  1. 执行 清除生成文件夹
    (按住“选项”键,进入“ 产品”菜单进入。
  2. 执行一个简单的“清洁”(CMD-Shift-K)从“ 产品”菜单。
  3. 构建 项目,让 Xcode 编译文件。

另外,我不确定这是否有帮助,但是在执行上述步骤(Xcode 偏好 > Locations)之前,我还删除了 导出数据

我也遇到了类似的问题,“找不到一个名为... ... 的类”,一旦我找到了原因,我就觉得这个原因很愚蠢。确保你没有从项目拖动到 接口-确保它被拖动到类本身

我什么都试过了!

确保 UIViewController 的类名不包含单词“ Test”

错误报告已提交。

我知道在大多数情况下,这只是 Xcode 的行为,但在我的情况下,没有一个建议的行为能够解决这个问题,我相信这是我在尝试重命名我的项目时犯的一个错误,所以我最终创建了一个新的项目,并导入了所有的东西。

这最终修复了它。

在我的例子中,我有一个相同的类名,而 xcode 无法识别我的目标是哪一个,所以在选择类的名称时要小心。

我所做的就是连接一个按钮作为一个没有参数的动作,发送方作为 UIButton。结果是-

@IBAction func comma1() {


}

我可以把剩下的 outlets或者 actions

对我来说,问题在于项目中存在语法错误。 解决了这个错误之后,一切都运转正常。 我正在使用 xCode 11

在应用了 MVC 体系结构之后,在更改了 info.plist 文件的位置之后,我遇到了这个问题。

在指定新的文件位置之后,问题得到了解决