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

我对此很新。 我一直按照苹果的教程一步一步的iPhone项目“HelloWorld”。 我在iPhone 5.0模拟器中运行它,它崩溃了:

2012-11-02 14:46:06.782 HelloWorld[9880:c07] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *** First throw call stack: (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) terminate called throwing an exception(lldb) 

有人可以告诉我哪里出了错? 我正在使用Xcode 4.5。

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

如果您想要将应用程序部署到较早版本的iOS,则需要将故事板或XIB更改为使用Autolay。 这是File Inspector中的checkbox:

关闭自动布局

您的Xib文件(接口生成器文件)包含iOS 5不支持的AutoLayout元素。

在Xcode中,转到您的.xib文件,并为每个文件,closuresAutoLayout。 应该有一个checkbox在左边说“使用AutoLayout”,取消选中,然后再试一次。 (这是在左边检查员的第一个选项卡下,当你有文件的所有者)被选中。

当我正在处理一个我想更新的旧项目时,我偶然发现了这个错误。 我select了“使用Autolayout”checkbox开始使用约束,但忘记将我的部署目标设置更新到iOS 6。

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

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

build议您使用自动布局,仅适用于iOS 6。