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


154

自从我开始使用Xcode(4.6.3)以来,这个错误使我发疯。每当我尝试将一个Storyboard项目链接到我的代码时,都会出现错误:

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

自定义类也会发生这种情况。我尝试过以下方法:

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

无论类是什么,我都无法ctrl拖动来在我的任何项目中创建连接。全新的模板应用程序也会发生相同的问题。如果手动输入代码,然后按ctrl-drag,则可以建立有效的连接,但无法自动添加。到目前为止,我在互联网上找不到的任何东西都没有帮助。有指针吗?


您是否三倍确定ViewController .m文件包含在正确的目标中?(在右侧面板检查员复选框)
阿尔菲汉森

2
在情节提要中有一个视图控制器,并为应实例化以管理视图的类的名称指定了“ ViewController”。检查情节提要中的每个视图控制器:选择视图控制器,查看右侧窗格中的“身份检查器”,然后查看“自定义类”属性。如果它显示为“ ViewController”,则说明您有问题。放入应该管理视图控制器的类的名称...或放入UIViewController以获取默认的UIKit实现。
Nicholas Hart

1
我在身份检查器中将自定义类更改为“ UIViewController”,并且不再能够将ctrl从情节提要中拖动到ViewController.h中。如果我创建一个新类并尝试ctrl-drag到其中(在相应地设置了视图控制器的类之后),则会出现相同的“找不到任何信息”错误。
user2597451

4
我遇到了这个问题,修改自动生成的ViewController类对我来说很有用。例如,只需NSLog()viewDidLoad:
jb 2014年

Answers:


292

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

脚步:

  1. 在项目文件浏览器(左侧面板)中找到该类,然后右键单击->删除
  2. 删除参考(不要丢进垃圾箱,因为这将永远失去课程)
  3. 右键单击包含该类的文件夹->将文件添加到...
  4. 在文件系统中找到您刚刚删除的类

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

注意:对我而言,以下操作无效

  • 关闭Xcode
  • 清理项目
  • 从情节提要中删除班级名称,然后重新输入

我认为这是苹果的错误


8
我试过了,但是对我不起作用/-:同样的错误。
迈克尔

1
@Michael,是的,现在我处于上述任何一种都不起作用的情况。Xcode是***
克里斯·哈里森

5
这个问题可以追溯到2013年7月,截至2016年5月,我得到了相同的错误,并使用此答案进行了修复。苹果多年来没有彻底修复它,这怎么会呢?
天行者'16

3
不敢相信这仍然是一个问题。只需在XCode 8.1上执行此操作
即可。– fisk

2
2017(版本8.2(8C38))仍然有效,Xcode SUCKS。当您将UI工作人员从故事板从一个场景复制粘贴到另一个场景时,这件事发生在我身上
Jaime Agudo

135

如果仍然有人对此感到沮丧,可以使用一种技巧来使事情正常进行。

我要做的是在班级中手动输入一个插座,例如:@IBOutlet weak var someView: UIView!,然后从代码中拖动到IB或情节提要中的视图。之后,我可以从IB /情节提要拖动到班上进行连接,助理编辑者可以在“自动”中识别班级,等等。

每次都能工作。


6
@ Gmeister4,如果您在代码中创建了出口,则出口左侧会显示一个小圆圈。单击并从该圆圈拖动到IB或Storyboard中的视图以建立连接。
安德鲁·罗宾逊

4
比最简单的答案容易。+1
cph2117

2
仍然不能以正确的方式做到这一点,即使在此之后也是如此-但至少这是可行的!
Alexandre G

1
上面的答案对我都不起作用。只有这个答案对我有用。
coolcool1994

1
太棒了,就是这样!
山姆

38

对于我来说,从右栏中的目标成员资格中删除它们,然后再次添加它们就可以了 在此处输入图片说明


这也对我有用。我已经复制了ViewController.swift类,这似乎是解决方案。
UberJames

我认为这是Xcode的错误,仍然存在于Xcode 8.0中
jiangjiefs 16-10-25

这在Xcode 8.3.3中立即发生在我身上,您的解决方案是最简单且有效的。所以谢谢!!!
RoberRM

Xcode 11.5中仍然存在(我是说Apple ??)。这里列出了唯一对我有用的解决方案。
Christophe Fondacci

12

由于VC不引用类文件,因此Xcode有时会这样做。一个简单的解决方案是:

手动编写属性。

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

这将在@IBOutlet之前创建一个空的链接符号,在助手编辑器中打开您的项目,然后单击链接符号在此处输入图片说明并拖动到要连接的视图中(我已经与TableView连接了)。就是这样。享受快乐编码!!!


8

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

只需通过代码创建插座并对其进行编译即可。例如:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

您一定喜欢Xcode ...

编辑:仍在Xcode 9上发生


7

以下步骤对我有用,希望对您也有用

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

2-等待索引项目文件

3-检查是否有效

4-如果仍然无法正常工作,请按照步骤5进行操作,如果对您不满意:)

5-清理并建立您的项目目标

在此处输入图片说明


7

我尝试了所有操作,但没有成功,所以对我来说,有效的是:

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

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


4

对我来说,以下工作:

  1. 进行“清理”和“清理构建文件夹”(按“产品”菜单上的“选项”以获取“清理构建文件夹”命令)

  2. 停止Xcode

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

    (/用户//库/开发人员/ Xcode / DerivedData)

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

  1. 在空中挥舞着死鸡

  2. 启动Xcode


3

到目前为止,我不得不结合几个答案:

  1. 从情节提要中删除自定义类名称。

(单击情节提要中视图控制器左上方的黄色按钮->转到身份检查器(选项+命令+ 3)->删除顶部的自定义类名称)

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

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

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

(右键单击文件所在的文件夹->“将文件添加到[项目]”)

  1. 将自定义类名称添加回情节提要。

3

如果人们尝试了上述方法,但仍然无法解决问题,那么对我有用的奇怪技巧是在大量空白中添加出口。如果您要添加的行的上方或下方没有其他行,则可以使用该行。奇怪,但是行得通!


3

对我有用的是,不是将连接从按钮拖到代码中,而是:

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

在以这种方式链接我的代码后,此后它便正常工作。


3

保持目标!

我正在用Xib添加新课程,我开始看到这个问题,并且花了很多时间在这里仔细查看答案,看看是否有任何改变。

碰巧的是,我的工作区中有多个目标,通常我必须在它们之间切换。

事实证明,添加新文件将启动Xcode中的重新索引。但是,如果您指向错误的目标,则索引可能毫无意义,并且在拖动连接Xcode的过程中将找不到您的类。

简而言之

第1步。

目标选择

确保设置了正确的目标,这样索引才有意义。


3

这对我有用:

  1. 执行“ 清理构建文件夹
    (按住“选项”键,然后转到“ 产品 ”菜单以对其进行访问。
  2. 从“ 产品 ”菜单中执行简单的“清洁”(CMD-SHIFT-K)。
  3. 生成项目以让Xcode编译文件。另外,如有必要,让它为文件建立索引。

顺便说一句,我不确定这是否有帮助,但在执行上述步骤之前,我还删除了“ 派生数据”(Xcode首选项>位置)


2

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


2

我尝试了所有这些答案,对我来说,问题与Xcode无法索引文件有关。我通过退出Xcode并重新打开项目来解决此问题。当然,在尝试了所有上述解决方案之后,我做到了:


2

产品>清洁(Command-Shift-K)为我修复了它!


2

这是我解决此问题的最简便的步骤。

  1. 我清理项目
  2. 在视图控制器中拖动一个新按钮。
  3. 生成项目。
  4. 将新拖动的按钮连接到类(插座或动作)。
  5. 然后瞧!现在,其他插座可以再次连接到班级!

1

根据我的测试经验,如果删除Xcode中关联的类,然后再次添加文件,则会发生此问题。


1

通常当发生这种情况时,我只是还没有保存该类的代码。只需跳到代码并按cmd + s,它通常可以正确地解决问题。



1

上面的任何步骤都不适合我,但我想我可能已经发现了这个问题。至少对我有用,这不是Xcode中的错误。

在助手编辑器中时,请查看具有ViewController代码的窗口顶部。右边第三个选项可能显示为“手动”,但应显示为“自动”。更改此设置后,问题就解决了!


1

我遇到了类似的问题,“找不到名为...的类”,一旦弄清原因,我的原因就很愚蠢。确保您没有从项目拖到界面上 -确保将其拖到类本身上



0

我会尝试重新制作有问题的.m和.h文件,并给它们一个原始名称,而不是像“ ViewController”这样的通用名称。按照您希望该文件执行的操作尝试其他操作,并以View Controller结尾(即“ PizzaDecoraterViewController”)

然后选择要连接到这些文件的ViewController。确保选择ViewController,而不仅仅是其中的一个对象。单击底部的黑条(带有“ First Responder”和“ Exit”图标的条)。整个ViewController的轮廓应为蓝色。然后转到身份检查器中的“自定义类”部分,您应该在第一个字段中看到灰色的“ UIViewController”。在该字段中,输入您要连接的.h或.m文件的名称(开始输入PizzaDecorator ...,它应该会自动完成一些工作)。然后按Enter。

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

如果您如上所述已完成所有操作,那么它应该可以工作。


不幸的是仍然无法正常工作。我曾经尝试这样做,但无济于事。这是屏幕截图:i.imgur.com/5ixtcps.png
2013年

嗯 奇怪。尝试以编程方式添加它们(即@Property(非原子的,坚固的)IBOutlet UIView * test;),然后在旁边出现小圆圈时,将其拖放到UIView中。
CaptJak

那行得通并且一直都有(而且应用程序似乎可以正常运行),但是我正在尝试解决它不会自动添加的问题。
user2597451

好吧,如果它能那样工作,那么它应该以另一种方式工作。XCode中的错误?尝试获取以前的版本(例如4.6.2或类似版本)并进行安装。否则,嗯,嗯……嗯……。–
CaptJak

是的,那是我担心的。卸载和重新安装一直没有进行,我希望自己犯了一个错误。降级我的Xcode副本的最佳方法是什么?
user2597451 2013年



0

在我的情况下,行得通的东西(有点奇怪,但是行得通)如下:

尝试添加数据源(例如,对UIController的扩展,例如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.
}

0

对我来说,我为其指定了自定义类的视图未能由界面生成器编译。它被标记@IBDesignable

删除@IBDesignable,然后添加我的网点,然后将其标记为已@IBDesignable解决我的问题。



0

试试这个

rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable
defaults write com.apple.dt.Xcode IDEIndexEnable 1 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.