Interface Builder文件中的未知类

Bre*_*ett 4 iphone xcode

为什么我在运行iPhone应用程序时仍会出现此错误?该文件是我一直在努力删除和替换的ViewController,但它不会死.据我所知,我的项目中没有任何引用(字符串或其他)此文件.

  • 我删除了相关文件(我正试图摆脱它.)
  • 我已经清理了项目并重建了.
  • 我在我的模拟器中有"重置内容和设置".
  • 我做了一个grep(grep -i -r"TheClassName"*),除了我的UserInterfaceState.xcuserstate文件之外什么都没有.
  • 我使用XCode的"查找/替换"选项卡搜索了代码.
  • 我已经仔细检查了我的Build Phases,我很确定它不在那里(它是一个大型项目).

还有其他想法吗?我花了太多时间试图弄清楚这个简单的事情; 我肯定错过了什么.

谢谢!

Rei*_*eid 6

检查您的笔尖或故事板,并确保您的所有视图都没有设置到班级!


Bre*_*ett 6

在最近两天的时间里,我在多台机器上尝试后,我终于解决了问题!我不会被挫败!

我将问题跟踪到UINavigationController上的setViewControllers调用,该调用在应用程序初始化时调用.我总是被传递3个对象(导航控制器中有3个窗格).即使我删除了第三个对象,如前所述,总会传入三个对象.前两个的类类型是正确的,但第三个只是一个UIViewController.奇怪的是,这个视图控制器有一个nibName,它对应于我之前删除的目标文件和Xib文件.当然,当在这个borked UIViewController上调用视图时,它会崩溃,因为相应的nib显然已被删除.请记住,使用grep在我的目录中找不到此对象或Xib的文本名称,所以我完全不知道当我运行我的应用程序时它是如何形成的.

所以,我认为该应用程序可能没有被正确清理.我对此进行了双倍和三倍检查.我甚至验证了我的工作区设置是否正确(文件 - >项目设置 - >高级).该应用确实每次都重新编译.

其次,我开始想到也许这个对象是通过其他方式设定的.向后工作,我添加了一些断点,发现在父UINavigationController上调用了initWithCoder - 这最终解决了调用对象上的setViewControllers并分配三个视图控制器(其中一个是有问题的).我可以很容易地从调用堆栈中看到正在加载的Nib文件反序列化了令人反感的东西.

所以,我开始挖掘我的Xib文件.当然,对象名称不在文件中(正如预期的那样,因为grep没有找到任何内容).我删除并重新创建了包含我的根UINavigationController的Xib部分.这最终改变了Xib文件中的Object ID和ref.其次,我创建了一个新的Xib和UIViewController,其名称与我之前删除的名称相同,希望Xcode可能会很高兴,如果我创建然后重新删除它们.然后我编译,重新删除它们,再次由Xib文件更新,用grep重新验证,是的,确实,该名称不存在任何内容.

它奏效了.在这个问题上花了好几天之后,我很确定界面构建器中有一个错误,但是我想重新审视这个问题来提交错误报告吗?绝对不...