我正在使用XCode6 beta并试用Swift。当我在视图控制器中放置一些自动布局约束时,应用程序崩溃并显示以下错误:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
我正在使用XCode6 beta并试用Swift。当我在视图控制器中放置一些自动布局约束时,应用程序崩溃并显示以下错误:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
Answers:
之所以收到此错误,是因为您已为在运行时删除的IBOutlet设置了约束。当您将约束设置为Interface Builder中的占位符时,会发生这种情况。由于取消了约束,因此在取消归档时会抛出错误,表明无法这样做。
有两种方法可以纠正此问题。
placeholder="YES"
。它应该是这样的:
假设您实际上希望约束是一个占位符,那么您将需要删除所有引用出口。为此,请选择您希望成为占位符的约束。然后打开连接检查器(最右边的按钮,如下所示:(->)),然后删除该约束上可能存在的所有引用出口。
刚才我遇到了同样的问题,以下对我有用。
我在App Store上发布了我的应用程序的工作版本,几天后又重新使用该应用程序,在UITabBarController中点击我的一个选项卡,它崩溃并显示错误:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
我没有我知道的任何占位符布局约束,也没有应定义的约束出口。
对我来说,解决方案是简单地关闭尺寸类别并保留iPhone的尺寸类别数据(App仅适用于iPhone)。这一定删除了我在尺码类中错过的所有内容。我想要大小分类,因此我将它们重新打开,然后该应用程序又可以正常工作了。
我对滚动视图进行了更改,以便可以使用我在Stackoverflow其他地方找到的解决方案使嵌入在其中的选择器控件正常工作。我的新情节提要仅将这些属性添加到滚动视图中,这对我来说似乎不错。
delaysContentTouches="NO" canCancelContentTouches="NO"
但是此外,我在另一个场景的情节提要中看到以下新片段:
<variation key="default">
<mask key="subviews">
<exclude reference="86H-aM-wei"/>
</mask>
</variation>
我不知道它从哪里来。起初我忽略了它,因为一切似乎都可以在我的开发机器上找到。但是,当构建是作为Release进行构建并经过测试时,我崩溃了。删除该乱码(?)片段可修复崩溃,并且似乎并未影响其他任何问题。