无法实例化名为 NSLayoutConstraint 的类

我还是个新手。我按照苹果的教程一步一步地为 iPhone 项目“ HelloWorld”。我在 iPhone 5.0模拟器上运行了一下,它崩溃了:

2012-11-0214:46:06.782 HelloWorld [9880: c07] < strong > * 终止应用程序到期 未被抓获 例外“ NSInvalidUnarchive veOperationException”,原因: “无法实例化 名为 NSLayoutConstraint’的类 * 首抛呼叫堆栈: (0x14a20520xea2d0a 0x144aa780x144a9e90x32f7d70x32f9af 0x32f6b70x23036d 0xd7e2c 0xd83a90xd85cb 0x38a730x38ce20x38ea80x3fd9a 0x10be60x118a60x207430x211f80x14aa90x138cfa90x14761c50x13db022 0x13d990a 0x13d8db40x13d8ccb 0x112a70x12a9b 0x1fed 0x1f150x1) 终止称为抛出异常(lldb)

谁能告诉我出了什么问题? 我用的是 Xcode 4.5。

36566 次浏览

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

如果您想将您的应用程序部署到旧版本的 iOS 上,您需要将故事板或 XIB 更改为 没有使用 Autolayout。这是文件检查器中的一个复选框:

turning off autolayout

你需要在 iPhone6.0模拟器中运行它,你的错误:

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

建议您使用自动布局,它只能在 iOS6上工作。

Xib 文件(Interface Builder 文件)包含 AutoLayout 元素,ios5支持 没有

在 Xcode,去你的。Xib 文件,对于每个文件,关闭 AutoLayout。左手边应该有一个复选框,上面写着“使用自动布局”,取消选中,然后再试一次。(当您拥有文件的所有者时,它位于左侧检查器的第一个选项卡下)选中。

当我在处理一个我想要更新的旧项目时,我无意中发现了这个错误。我选择了“ Use Autolayout”复选框来开始处理约束,但是忘记将部署目标设置更新到 iOS6。