在Interface Builder文件中出现未知类

16
我创建了一个相当简单的iPhone应用程序,然后想创建iPad版本(通用)。尝试使用“升级”选项,但没有成功。所以我创建了一个单独的通用应用程序,并将xib文件复制到我的项目中。那也行不通,所以我删除了xib文件(以及它们关联的.m和.h文件)。
现在,当我运行iPhone版本时,它会给出“Interface Builder文件中的未知类iPadSample1AppDelegate”错误,而且只有在UIUserInterfaceIdiomPad下运行时才支持UISplitViewController,然后它就退出了。因此,我恢复到在开始iPad冒险之前拍摄的快照...我得到了相同的错误。我尝试了XCode搜索和Spotlight搜索。我的项目中没有对那个类或UISplitViewController的引用,但是由于某种原因,XCode认为存在。
是否有一种方法可以删除不存在的引用?LOL
更新:
这可能与我的XCode环境有关。在这里找到其他帖子之后,我尝试了Clean All / Build / Touch,当进行touch操作时,我在XCode中收到以下错误消息:
未捕获的异常:
-[XCBuildLogWarningMessage setFileLocations:]:向实例0x2014dd0a0发送无法识别的选择器
有没有办法重新安装XCode而不会弄乱其他所有东西?
8个回答

20

原来iPhone模拟器上的位和XCode不同步。我使用了“重置内容和设置”功能,一切都正常了 :) 谁知道呢?


谢谢!您刚刚节省了我尝试进一步调试的时间。现在看来,我们看到的调试信息是从iOS模拟器中发布的,这是有道理的。但不明显的是,应用程序并没有每次都重新部署。在XCode 4的组织者视图中清除派生数据是很好的,但是如果iOS模拟器上的IB文件仍然旧的话,那么难怪它会产生奇怪的错误。感谢您的发现。 - jbjon
6
我也遇到了这个问题,但这个解决方案对我无效。我的问题与类未被包含在“复制束资源”中有关。谢谢。 - Leandro Alves
我的症状是:重构->重命名,在启动时崩溃并显示“未知类:TheOneYouDeletedDerp”。听起来有类似的问题与其他有效的解决方案,但我的问题通过重置解决了,如果有人做了同样的事情,可以尝试这个解决方案。 - CBGraham
我刚刚从模拟器中删除了该应用程序,然后它就可以正常工作了。 - Nate Potter
解决了我2小时的调试问题!使用iPod并卸载应用程序解决了它,谢谢! - shem

13

如果您前往目标中的“构建阶段”,您将看到“编译源代码”选项卡。请确保所需的每个 m 文件都列在其中。如果没有,只需在此处添加即可,警告应该就会消失。


已经为我修复了。Xcode在添加/移动文件方面存在问题。 - Thromordyn
谢谢,帮我避免了许多可能的麻烦。 - Jens Bergvall
将文件添加到“编译源”中对我很有帮助,@Thromordyn可能是正确的,Xcode没有正确地添加文件。 - zanussi
这对我有用。我已经将源文件重新排列到一个真正的文件夹层次结构中,所以我没有一个文件夹中的长文件列表(为什么这不是默认的Xcode行为?)。之后,尽管它们在Xcode解决方案中,但我的大多数源文件根本没有被编译! - Typo Johnson

7

右键点击Storyboard --> 打开方式 --> 源代码

在Storyboard源文件中查找您未知的类名。这可能是因为您意外地为其中一个UIView子类分配了自定义类名。


恰好符合我的情况。很高兴知道打开XIB文件的新方法。 - Philip007
这应该是正确的答案。谢谢。 - Shobhakar Tiwari

7

我做了一些研究,发现

对于我的情况

我只需要右键单击项目导航器中的投诉文件。

选择查看/实用程序/显示文件检查器。由于某种原因,目标成员资格没有被选中。

这就是为什么链接器说它不知道类的存在。

我只需勾选它并且一切都像魅力一样运作。


非常感谢 - 你刚刚为我节省了2小时的调试时间 - 当你知道所有问题时,IDE非常棒,但当你正在学习时,它们经常会让人感到痛苦... - kfmfe04

1
我解决问题的方法是在模拟器中“删除”应用程序,然后重新构建。可能是因为这个类仍然被iPhone模拟器中的本地设置所引用。

1

我曾经遇到过同样的问题,但上面的解决方案并没有解决我的问题。最终,我通过从我的info.plist文件中删除“Main storyboard file base name (iPad)”条目来解决了这个问题。


0
如果您使用CocoaPods,则将 .framework/.a 文件拖到项目的“链接二进制文件库”部分。

0
在我的情况下,这个错误出现在我重构类名之后。不知何故,类名在.xib文件中没有改变。我用TextEdit打开了这个xib文件,并将所有的OldClassVC替换为NewClassVC。然后我保存了xib文件并在新构建之前清理了项目。项目运行良好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接