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


165

我对此很陌生。我逐步遵循了Apple为iPhone项目“ HelloWorld”编写的教程。我在iPhone 5.0模拟器中运行了它,然后它崩溃了:

2012-11-02 14:46:06.782 HelloWorld [9880:c07] *由于未捕获的异常'NSInvalidUnarchiveOperationException'而终止应用程序,原因:'无法实例化名为NSLayoutConstraint的类'*第一个调用堆栈:(0x14a2052 0xea2d0a 0x144aa78 0x144a9e9 0x32f7d9 0x32f7d7 0x32f7d9 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。


您必须在xib / storyboard中关闭自动布局功能
beryllium

Answers:


575

默认情况下,在Xcode 4.5中创建新的iOS项目时,情节提要或XIB设置为使用“自动布局”,这是iOS 6.0中的新功能。该NSLayoutConstraint班是自动布局系统的一部分,它不会在旧版iOS的存在。

如果要将应用程序部署到旧版本的iOS,则需要更改情节提要或XIB以使用自动版式。这是文件检查器中的一个复选框:

关闭自动版式


29
我使用ScreenFlow进行捕获和裁剪。我使用Photoshop将.mov转换为.gif。
rob mayoff 2013年

这也适用于xib!
virata

即使执行了这些方法,也无法从纵向旋转到横向旋转视图。如果您仍然希望轮换发生,您如何解决该问题?在此先感谢,并... gif ^^
aGit 2013年

@robmayoff感谢您的gif和完美答案。我的问题很快就解决了。:)
ishhhh

我喜欢这个,所以我创建了自己的异常断点。 rsaunders.co.uk/2013/06/add-exception-breakpoint.html
罗伯特·

21

您的XIB文件(界面生成文件)包含自动版式元素,它的iOS 5也没有支持。

在Xcode中,转到您的.xib文件,然后为每个文件关闭AutoLayout。左侧应该有一个复选框,显示“使用自动版式”,取消选中它,然后重试。(当您拥有文件的所有者时,这位于左侧检查器的第一个选项卡下)。


8

当我要更新的旧项目时,我偶然发现了此错误。我选择了“使用自动布局”复选框以开始使用约束,但是忘记将我的“部署目标”设置更新为iOS 6。


7

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

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

建议您使用仅适用于iOS 6的自动版式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.