【问题标题】:Error: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x6887a30> setValue:forUndefinedKey:]错误:由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<UIApplication 0x6887a30> setValue:forUndefinedKey:]
【发布时间】:2012-03-08 03:15:54
【问题描述】:

完整的错误是:由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类与键的键值编码不兼容。

所以我一直在尝试其他人所说的类似问题。我已经尝试摆脱项目中对 LandscapeView 的所有提及,包括 ViewController_iPhone.xib 中文件所有者中的连接,然后我通过在超类 ViewController 中创建插座来重新开始(因为我想为 iPad 使用 LandscapeView 和 PortraitView也)然后我在 ViewController_iPhone.xib 和 ViewController_iPad.xib 中分别设置到名为 Landscape 的 UIView 的连接,但我仍然收到此错误。

我刚刚开始进行应用程序开发,因此我正在尝试为一个支持 iPhone 和 iPad 上所有方向的应用程序制作模板。感谢您的帮助

编辑:这是我的所有应用程序委托 h 和 m 以及 main.m 的链接:I am getting the Applications are expected to have a root view controller at the end of application launch error

编辑 2:所以我也尝试让 LandscapeView 成为 ViewController 的属性,并在 ViewController.m 中创建了一个 setter 方法,但它仍然存在同样的问题。

【问题讨论】:

  • 如果没有堆栈跟踪或任何与您的程序相关的实质性内容,任何人都很难做出建设性的回应。还有,landscapeView是从哪里进入的呢?
  • 您得到的错误意味着您正在尝试使用不存在的键设置一个值。您在代码中的哪个位置使用键设置值?
  • 好的,@zmccord 我在哪里可以找到堆栈跟踪?还有什么我可以链接的吗?
  • 好的,@zmccord 我在哪里可以找到堆栈跟踪?还有什么我可以链接的吗?在 Luis Oscar 我不知道我一直在试图找到它,因为我有点理解出了什么问题,但我不知道哪里出了问题,main.m 中的 main 函数在以下情况下弹出绿色我运行程序。我在我的项目中搜索了“key”这个词,它在评论和 AppDelegate.m 中的 [self.window makeKeyAndVisible] 中弹出两次; didFinishLaunchingWithOptions 函数内的行。

标签: xcode ios4 ios5


【解决方案1】:

我发现这个错误发生的最常见的地方是当你从一个非 xib 所有者的类中实例化一个 xib 视图时。

我的意思是你可能会调用类似这样的东西:

[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];

您正在更改owner,因此您必须确保self 引用的类具有“MyView”所需的所有IBOutlet 属性。通常这是在 Interface Builder 中完成的,但在这种情况下,您正在以编程方式设置您的所有者,这意味着您无法在 IB 中建立连接。当 IBOutlets 不存在时,应用程序会尝试建立这些连接并失败,并给出您看到的错误。

我的建议(不知道比您目前提供的更多信息)是检查您是否在没有正确的 IBOutlets 的情况下拨打了此电话。

【讨论】:

  • Aaron 有没有一种方法可以将我的项目发送给您,但是对于适用于所有设备的基本 SIngle View 项目,我做得并不多。我刚刚创建了 ViewController 的 2 个子类,然后在两个 xib 中创建了 UIView 对象,然后在 IB 中创建了属性,因此代码是自动生成的,我将 2 个 xibs Fle Owner 的类设置为正确的子类,然后我去了 Info 选项卡状态栏最初没有出现,选择主nib文件和主nib文件(ipad)作为两个xib文件。
  • 在我的 appdelegate.m 中,我通过将 [ViewController alloc] 更改为 [ViewController_iPhone alloc] 和 [ViewController_iPad alloc] 更改了 applicationDidFinishLaunchingWithOptions,并且我编写了导入这两个子类。
  • 感谢 iPhone 开发者论坛 得到我的问题,是某些功能覆盖和模板的混合导致了错误
  • 很高兴您得到了答案。抱歉,我没能早点看你的代码。
【解决方案2】:

我必须删除主界面的 NIB 或 XIB(或本次迭代中的任何内容)。

如果 Apple 在将损坏的软件发布给毫无戒心的公众之前对其进行全面测试,那肯定会很好。他们本可以通过多种方式处理问题;但他们选择了运行时崩溃和模糊的 [无意义] 错误消息。

【讨论】:

  • 这解决了我的问题。谢谢!同意错误消息是没有用的。
  • 这导致我进入黑屏。如果你没有故事板,你应该如何展示你的应用??
【解决方案3】:

两个主要原因是关注

  1. 您的 iboutlet 可能会损坏,请查看情节提要或 IB。
  2. 如果您不为自定义类选择模块,请查看您的故事板。

【讨论】:

    【解决方案4】:

    我发现我在 viewcontroller.h 中删除了一个 WebView ,但没有删除指向这个 WebView 的 xib 文件!

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多