Interface Builder文件中的未知类信息

时间:2013-02-14 18:13:50

标签: ios error-handling interface-builder

就像在标题中我得到了疯狂的按摩,我无法处理它

Unknown class info in Interface Builder file.

每次我运行我的项目时,都会出现一些疯狂的错误,或者某些条形消失。有人知道该怎么办吗?

11 个答案:

答案 0 :(得分:22)

按顺序尝试:

  1. 产品 - >在Xcode中清洁
  2. 从模拟器或设备中删除应用
  3. 重启Xcode
  4. (Build&)再次运行
  5. 如果这没有帮助,您可能会引用一个必须手动查找和删除的笔尖或故事板中的类。

答案 1 :(得分:9)

警告可能是因为您已为其中一个UIView子类分配了已删除/已删除的自定义类名。为了解决这种情况,

Open interface builder class as Source Code by right clicking on it (Open As -> Source Code).
Find your unknown class name in the source file. And handle accordingly.

它对我有用。

答案 2 :(得分:3)

请参阅我对https://stackoverflow.com/a/29013058/784318

的回答
  

我今天使用Swift遇到了这个问题。

     

我将课程Model.h + Model.m更改为Model.swift。   此对象在Interface Builder中与class = Model一起使用。

     

一旦我更换了对象,就无法再加载该类。

     

我必须做的是改变IB中的类引用:

Class = Model
Module = 
     

Class = Model
Module = <TARGETNAME>
     

您将在构建设置中找到<TARGETNAME>。它也是生成的Swift-Header中显示的名称:#import "TARGETNAME-Swift.h"

答案 3 :(得分:2)

通过使用“自定义类”面板,选中“从目标继承模块”(在“类和模块”行的正下方),我已经解决了这个问题(在使用Swift 4 / Xcode 10.1时)。

答案 4 :(得分:1)

在Interface Builder中将视图或控制器自定义为该类后,更改视图名称并查看控制器类时,我倾向于看到这些类型的错误。我会在您的笔尖或故事板中查看您的视图和控制器,以查看您的自定义类是否仍然存在并相应地匹配。

当您重命名或删除基础代码而不更新IB文件时,您将遇到IB文件的问题。在将它们链接到Interface Builder中的对象之后删除或更改IBOutlet的名称时会发生类似的问题。除非您明确删除它,否则您仍将在Interface Builder中拥有该引用。

最后,您可以将IB文件视为文本文件。这是一个xml文档,您可以在其中看到所有类引用。您可以看到项目中是否存在可能不存在的任何类。

答案 5 :(得分:1)

如果从Build Phases / Compile Sources

中删除ClassName.m,也会发生这种情况

答案 6 :(得分:1)

我会用我的一些背景来重述问题,然后提供解决方案:

我创建了一个自定义Swift框架,并将框架项目导入工作区。然后,我使框架成为我的Swift应用程序的目标依赖项。最后,我在Interface builder中引用了一个类。

我一直得到类找不到错误,我注意到在调试器中它的输出类是被破坏/未编译的ObjC对应物..

解决方案

只需将框架标题添加到ObjC桥接标题中:

#import <MazKit/MazKit-Swift.h> // In my case, MazKit

现在,导出符号,您可以通过cmd +点击标题本身来验证,然后您将看到错位/未编码的类名。

答案 7 :(得分:0)

项目 - &gt;一般 - &gt;部署信息 - &gt;主界面&lt; - 清除此字段。

您似乎已删除文件Main(Storyboard),但您仍然在项目属性中引用它。

答案 8 :(得分:0)

可能是在构建过程中未复制文件。转到“构建阶段”选项卡,然后检查副本捆绑资源以查看文件是否存在。如果没有添加到项目中,请清理并重建以查看是否可以解决您的问题。这对我有帮助。

答案 9 :(得分:0)

我在Lottie库遇到了同样的问题。

  

Interface Builder文件中的未知类AnimationView。

如果您的类视图位于其他模块中,则会发生这种情况。

要解决此问题,请进入IB文件(Xib或情节提要)/显示身份检查器并正确设置模块:

enter image description here

答案 10 :(得分:0)

我重命名了我的 TableViewCell 类之一。除了选中 Inherit Module From Target 复选框外,没有其他任何效果。

打开 xib 文件 > 选中时转到身份检查器 > 选中复选框(同时确保类名正确)。

完成!