NSInvalidUnarchiveOperationException:无法实例化名为NSLayoutConstraint的类

时间:2012-11-02 19:10:29

标签: objective-c ios autolayout

我对此很新。我一步一步地关注了Apple项目“HelloWorld”的Apple教程。我在iPhone 5.0模拟器中运行它并且崩溃了:

  

2012-11-02 14:46:06.782 HelloWorld [9880:c07] *终止app到期   没有被捕       异常'NSInvalidUnarchiveOperationException',原因:'无法实例化       名为NSLayoutConstraint的类       * 第一次抛出调用堆栈:       (0x14a2052 0xea2d0a 0x144aa78 0x144a9e9 0x32f7d7 0x32f9af 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a   0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x14761c5 0x13db022   0x13d990a 0x13d8db4 0x13d8ccb 0x112a7 0x12a9b 0x1fed 0x1f15 0x1)       终止调用抛出异常(lldb)

有人可以告诉我出了什么问题吗?我正在使用Xcode 4.5。

4 个答案:

答案 0 :(得分:574)

默认情况下,当您在Xcode 4.5中创建新的iOS项目时,您的故事板或XIB将设置为使用Autolayout,这是iOS 6.0中的新功能。 NSLayoutConstraint类是Autolayout系统的一部分,在旧版本的iOS中不存在。

如果要将应用程序部署到较旧版本的iOS,则需要将故事板或XIB更改为而不是使用Autolayout。它是文件检查器中的一个复选框:

turning off autolayout

答案 1 :(得分:21)

您的Xib文件(界面构建器文件)包含AutoLayout元素,iOS 5支持支持。

在Xcode中,转到.xib文件,对于每个文件,请关闭AutoLayout。左侧应该有一个复选框,上面写着“使用AutoLayout”,取消选中它并再试一次。 (当您选择了文件所有者时,这位于左侧检查器的第一个选项卡下)。

答案 2 :(得分:8)

当我处理我想要更新的旧项目时,我偶然发现了这个错误。我选择了“使用Autolayout”复选框来开始使用约束,但忘记将我的部署目标设置更新为iOS 6.

答案 3 :(得分:7)

您需要在iPhone 6.0模拟器中运行它。你的错误:

* Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *

建议您使用autolayout,它仅适用于iOS 6。