【问题标题】:Migrating project to Xcode 7.2 on OS X El Capitan breaks the build在 OS X El Capitan 上将项目迁移到 Xcode 7.2 会破坏构建
【发布时间】:2016-03-15 11:01:31
【问题描述】:

我之前使用 Xcode 7.1 运行 OS X Mavericks,我刚刚更新到 OS X El Capitan 和 Xcode 7.2。我的应用程序在模拟器和设备上启动良好,没有任何情节提要警告。现在,我在情节提要中看到一堆关于缺少约束的警告,并且应用程序因以下错误而崩溃:

由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“无法实例化名为 IBNSLayoutConstraint 的类”

我也尝试了这里发布的解决方案:Could not instantiate class named IBNSLayoutConstraint

我在 xml 中的任何地方都找不到 placeholder="YES",而且我的情节提要太大而无法实际检查每个约束以查看我是否错误地为任何约束打开了占位符复选框。

在查看情节提要的 xml 时,我确实看到了以下警告。

【问题讨论】:

  • @SandyChapman:对不起,我没听懂。能详细点吗?
  • @SandyChapman : pastebin.com/NxAdh3q7
  • 我在我的一个项目中遇到了同样的问题.. 不知道为什么.. 我恢复到 7.1.1

标签: xcode7 xib nslayoutconstraint osx-elcapitan


【解决方案1】:

Disable AutoLayout 在你的故事板上。这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    主要是确保当您使用 IB 时检查您没有任何限制,并检查“已安装”复选框是否属于 view to 是“未安装”。 Xcode 7.1 甚至没有给出警告,但 7.2 导致崩溃

    【讨论】:

    • 对于情节提要上的每个约束,默认情况下至少选中一个“已安装”复选框。我不知道它是如何工作的,也不知道不同的复选框是什么意思,但它们似乎不会引起任何问题。
    【解决方案3】:

    选择 Storyboard Disable Size 类解决我的问题。希望这个能对您有所帮助!谢谢 构建项目后,您可以再次启用大小类。

    【讨论】:

    • 这不是说“破坏你的用户界面然后重新构建它”基本上是一样的吗?具有大 UI 的应用程序会因为禁用尺寸类而失去几乎所有的尺寸类配置。这种变通办法实际上只应被视为“核”选项作为最后的手段。
    【解决方案4】:

    实际上,您使用的不是 Storyboard,而是 Xib。在您的文件中,您会找到如下部分:

    <mask key="constraints">
        <exclude reference="6fq-cy-xp8"/>
    </mask>
    

    您需要将.xib 作为“源代码”打开并删除它们,以便约束变为installed

    【讨论】:

    • 确实有效!我不明白他们是否一直在那里,或者他们是否在迁移时被添加。你知道在 IB 中是否可以做任何事情来确保它不会再次发生?
    • 通常不会发生这种情况,除非您选中 IB 中的复选框以禁用“已安装”状态。
    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多