【问题标题】:xcode 9 crash when open storyboard打开故事板时xcode 9崩溃
【发布时间】:2018-08-07 10:25:17
【问题描述】:

XCode 9 GM Candidate 1 当前在打开情节提要时崩溃。

ProductBuildVersion:9A235

UNCAUGHT EXCEPTION (NSInternalInconsistencyException): Could not find class named UIImage
UserInfo: (null)
Hints: 
  0: Replacement view is installing: <IBStoryboardCanvasViewController: 0x7fdf6d7f7d70 representing: (null)>

【问题讨论】:

  • 我也收到了。
  • 这是个大问题……我已经好几天不能工作了 D:
  • 我唯一的解决办法是在 XCode 8 中完成工作,并使用 XCode 9 构建。
  • 太不可思议了...你知道问题可能是什么吗?
  • 另请参阅此处的 DocPllana 解决方案:stackoverflow.com/a/46808117/2301213。修复了我的崩溃(w xcode 9.1),没有任何代码更改

标签: ios xcode


【解决方案1】:

对我来说,在我的应用中打开任何故事板或 xib 时都会崩溃。我创建了一个新的单视图应用程序项目,毫无问题地打开了它的故事板,重新打开了我自己的项目 - 它开始像往常一样打开故事板和 xib。可能是某种缓存问题..

以下是我遇到的崩溃的详细信息:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
Sending _openAs: to <IDEDocumentController: 0x7f944580a970> from <NSMenuItem: 0x7f94249528d0 Interface Builder - Storyboard>
ProductBuildVersion: 9A235
ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEInterfaceBuilder/IDEInterfaceBuilder-13196/InterfaceBuilderKit/IssueProvider/IBIssueProvider.m:72
Details:  castedInstance should be an instance inheriting from IBDocument, but it is IDEPegasusSourceEditor.SourceCodeDocument
Object:   <IBIssueProvider: 0x7f94366a73d0>
Method:   -updatedIssuesForDocument:

我经历过的另一次崩溃,以同样的方式得到了修复:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
Sending openClickedNavigableItemAction: to <IDEStructureNavigator: 0x7ff718acde20 representing: <DVTExtension 0x7ff70acf22e0: Structure Navigator (Xcode.IDEKit.Navigator.Structure) v0.1 from com.apple.dt.IDEKit>> from <IDENavigatorOutlineView: 0x7ff7169ba340>
ProductBuildVersion: 9A235
ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-13247/IDEKit/Editor/IDEEditorContext.m:1935
Details:  Unexpected document in IDEDocumentController:<IBXIBDocument: 0x7ff6fb013a00>(  0   -[IDEEditorDocument init] (in IDEKit)

【讨论】:

  • 在哪里可以找到 xcode 的崩溃日志?我找不到任何关于如何做到这一点的答案。
  • @thibautnoah,您可以在 Console.app 的“用户报告”部分找到它们。
【解决方案2】:

我遇到了同样的问题,但在我的情况下,它并没有通过删除 nil 键来解决。正如 Vlad Valentin 所强调的,它与我的故事板中的 UITabBarViewController 有关。

问题,如 Xcode 崩溃报告中抛出的错误所述:

UNCAUGHT EXCEPTION (NSInternalInconsistencyException): Could not find class named UIImage

与我分配给tabBar背景图片相关。从 Storyboard 源代码中删除图像后,我可以再次打开 Interface Builder。

删除:

<tabBar key="tabBar" contentMode="scaleToFill" backgroundImage="Tabbar background" id="W28-zg-YXA">

当我尝试使用 Interface Builder 重新添加图像时,Xcode 抛出了相同的异常。我已经求助于以编程方式加载图像。希望这会有所帮助,并且可以节省一些人必须完全重新创建他们的UITabBarViewController's。

【讨论】:

  • 删除 backgroundImage 键和值,对我有用。谢谢!
  • 这也是我的问题。非常感谢您解决这个问题。正如您所说.. 只需在 TabbarController 中删除您的 TabBar 元素的 backgroundImage。而且您根本无法在界面构建器中进行设置。当前必须从代码中完成。
  • 删除 backgroundImage="tabBar" 对我有用!谢谢!
  • 奇怪的是,我按照建议删除了它,但我的应用程序仍然无法正常运行。所以我在所有场景中添加了 ios 11 新的安全区域布局指南。然后重新添加这条线,它工作了!解决了我所有的问题。
【解决方案3】:

我遇到了类似的问题。就我而言,我发现它在通过文件资源管理器打开时总是崩溃,而通过快速打开 (CMD+SHIFT+O) 不会导致 XCode 崩溃。

【讨论】:

  • 这个技巧奏效真是太奇怪了。大声笑...那是那里的一些错误。谢谢!
  • 救命!无法打开 xib、storyboard、launchscreen 文件;/ 感谢分享)
  • 对我也有用!
  • 也为我工作,快速打开一次,然后它开始为所有其他故事板工作
【解决方案4】:

问题是一个零键标签(至少对我来说)

&lt;nil key="simulatedBottomBarMetrics"/&gt;

或更一般地

&lt;nil key="&lt;generic_name&gt;"/&gt;

它有它的对应物

&lt;simulatedToolbarMetrics key="simulatedBottomBarMetrics"/&gt;

或更一般地

&lt;&lt;generic_name&gt; key="generic_name"/&gt;

全部删除即可解决问题。

  1. 源代码打开故事板
  2. 搜索并删除:&lt;nil key="simulatedBottomBarMetrics"/&gt; 或任何&lt;nil key="&lt;generic_name&gt;"/&gt;(将&lt;generic_name&gt; 替换为您的特定标签名称)
  3. 搜索并删除他们的对应部分:&lt;simulatedToolbarMetrics key="simulatedBottomBarMetrics"/&gt; 或任何 &lt;&lt; generic_name &gt; key="generic_name"/&gt;(将 &lt;generic_name&gt; 替换为您的特定标签名称)
  4. 保存并正常打开故事板
  5. 享受

编辑:

这个标签似乎是相关的,并且在UITabBarControllers 的故事板源代码中,但是它们的对应标签分散在连接到UITabBarControllerUIViewControllers 周围。可以是以下一级、二级或更多级别。

【讨论】:

  • 这似乎对我有用。我有几个 可能还有更多。刚刚摆脱了这个,故事板现在加载了。
  • 我已经替换了&lt;nil key="simulatedBottomBarMetrics"/&gt;&lt;nil key="highlightedColor"&gt;。知道我应该为&lt;nil name="viewControllers"/&gt; 使用什么吗?
  • 这个&lt;nil name="viewControllers"/&gt;里面
  • 对不起@Uma 我的迟到回复,我不确定,但您可以尝试在不删除此特定键名的情况下打开情节提要。
  • 删除所有 它对我有用
【解决方案5】:

我找到了适合我的情况的解决方案。它从 UITabBarViewController 崩溃了。

  1. 将故事板作为源代码打开
  2. 搜索您的 UITabBarViewController
  3. 移除标签栏
  4. 作为界面构建器打开故事板
  5. 创建新的标签栏并连接您需要的根视图控制器

正如 Michele Schillaci 所说,您可以尝试删除一些视图控制器并检查是否解决了问题。

【讨论】:

  • 3.移除标签栏
  • 对我来说,问题在于连接,这就是故事板崩溃的原因。但是我必须添加一个新的标签栏控制器才能连接新的连接。
【解决方案6】:

标签栏包含系统标签栏项目存在一个已知错误。 Xcode 9.1 发行说明承认这一点,并提出了一种解决方法:

界面生成器

在情节提要或 xib 中配置为系统项的 UITabBarItem 会导致构建失败。 (34197132)

解决方法:在 Interface Builder 中配置为自定义项,然后在视图控制器的 awakeFromNib 方法中将标签栏项重置为所需的系统项。

【讨论】:

    【解决方案7】:

    我删除了&lt;nil key ="...."&gt;,但它没有用。所以我尝试了(来自@Vlad Valentin):

    1. 将故事板作为源代码打开。
    2. 搜索tabBarController

       <scene sceneID="RIF-kY-Kwk">
          <objects>
              <tabBarController storyboardIdentifier="mainViewController" id="p5V-Jj-erc" customClass="MainViewController" customModule="yourModule" customModuleProvider="target" sceneMemberID="viewController">
                  <tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="kWD-Cd-EAU">
                      <rect key="frame" x="0.0" y="0.0" width="375" height="49"/>
                      <autoresizingMask key="autoresizingMask"/>
                      <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                  </tabBar>
                  <connections>
                      <segue destination="FQU-DF-g8S" kind="relationship" relationship="viewControllers" id="wf7-sS-3aP"/>
                      <segue destination="cVl-bj-mqD" kind="relationship" relationship="viewControllers" id="A5l-iP-1pv"/>
                      <segue destination="yE9-HB-Hqo" kind="relationship" relationship="viewControllers" id="U4m-N7-DeC"/>
                      <segue destination="PmG-7U-DMm" kind="relationship" relationship="viewControllers" id="u4J-Y7-Z51"/>
                  </connections>
              </tabBarController>
              <placeholder placeholderIdentifier="IBFirstResponder" id="APY-5z-hrA" userLabel="First Responder" sceneMemberID="firstResponder"/>
          </objects>
          <point key="canvasLocation" x="-3126" y="1236"/>
      </scene>
      
    3. storyboardIdentifier="mainViewController"customClass="MainViewController"&lt;connections&gt;..&lt;/connections&gt; 对您很重要。复制并粘贴它。

    4. 删除scene
    5. 现在您可以使用 Interface Builder 打开故事板。
    6. 添加标签栏控制器(拖放并删除子视图控制器。)
    7. 转到 Stroyboard 源代码并粘贴 storyboardIdentifiercustomClassconnections

    【讨论】:

    • 你删除了他们的同行:&lt;&lt;key_name&gt; key="&lt;key_name&gt;"&gt;
    • 是的。我的项目中有 5 个故事板,我检查了所有故事板都有 nil 标签。但是只有一个,有标签栏控制器,没有打开。
    【解决方案8】:

    简单修复:

    只需将insetsLayoutMarginsFromSafeArea="NO" 放在&lt;tabBar key="tabBar" contentMode="scaleToFill" id="ytw-4N-0RV"&gt; 上,然后从情节提要源代码中删除所有&lt;nil key ="...."&gt;

    例如:

    <tabBarController id="mhN-Gc-eXK" sceneMemberID="viewController" restorationIdentifier="tabbar" storyboardIdentifier="tabbar" customClass="TabbarMainViewController">
        <tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="ytw-4N-0RV">
            <rect key="frame" x="0.0" y="0.0" width="320" height="49"/>
    

    【讨论】:

      【解决方案9】:

      我也遇到了这个问题。 当我在我的工作项目的 Xcode 中单击我的故事板文件时崩溃(彩虹球旋转)。即使我创建一个新的单视图项目也会发生这种情况。

      对我来说,我重新启动我的 Mac Book 是一种解决方法。

      希望这可以解决你的问题。

      【讨论】:

        【解决方案10】:

        我发现以前安装的 XCode 版本是问题的根源。我以为我只安装了一个版本,但是在右键单击 XCode 项目文件时,我看到在“打开方式...”下,有很多版本。有 XCode 9 的旧 beta 版本,以及稳定版本甚至 XCode 8 的各种版本。

        在我的 mac 的 Applications 目录中找不到这些版本,所以我意识到它们在 Downloads 目录中处于休眠状态。我所做的是删除所有这些并繁荣,故事板不再冻结 XCode 9.3。

        【讨论】:

        • 同样的问题,同样的修复,除了 Xcode 9.3 破坏了 Xcode 10.2。将 9.3 从下载移至垃圾箱,现在一切正常。奇怪!
        • 修复了同样的问题。我正在使用 Xcode 11 Beta 5。删除了所有以前的版本,一切正常。
        【解决方案11】:

        我换了这个

        <tabBar key="tabBar" contentMode="scaleToFill" translucent="NO" backgroundImage="background_tabbar" selectionIndicatorImage="background_tabbar_item" id="Z9r-yE-1Zs">
        

        关于那个

        <tabBar key="tabBar" contentMode="scaleToFill" id="Z9r-yE-1Zs">
        

        当我尝试打开情节提要时,Xcode 不再崩溃

        【讨论】:

          【解决方案12】:

          所以我遇到了一个问题,即当我在 XCode 9 中打开情节提要时,文件被修改(对于 XCode 来说并不罕见) - 但是每当我运行启用了异常断点的应用程序时,它就会崩溃。从调试器中点击继续允许应用程序正常运行。

          查看 XCode 在 storyboard 文件中修改了什么,它在文件顶部,'scenes' xml 元素之前添加了:

          <customFonts key="customFonts">
              <array key="GillSans.ttc">
                  <string>GillSans</string>
                  <string>GillSans-Light</string>
              </array>
          </customFonts>
          

          删除它可以阻止奇怪的崩溃问题,但修改情节提要会不断添加代码。看来解决方案是从情节提要中删除所有自定义字体并将它们设置在代码中 - 或者希望这只是一个奇怪的错误这将在以后的 XCode 版本中修复。

          【讨论】:

            【解决方案13】:

            我遇到了同样的问题:在 Xcode 8 中创建的故事板会挂在 Xcode 9 中。通过逐个导出视图将我的故事板拆开后(使用编辑器/重构到 Stoyboard - 我不知道存在的功能直到我被这个问题击中)我发现两个特定的视图导致 Xcode 挂起。

            在这两个视图中,我向 UITabBar 添加了多个项目 - 左侧的按钮、灵活的空间和右侧的按钮。如果 Xcode 试图显示这个,它会挂起。如果我在看到这些“中毒”视图后快速单击任何其他 Storyboard,它也会挂起。

            因此,解决方案是在 Xcode 8 中打开项目,从 TabBar 中删除除一项以外的所有项目,删除所有派生数据文件夹,退出 Xcode 8,加载 Xcode 9,执行 Product / Clean,如果幸运的话,你会很高兴的。

            【讨论】:

              【解决方案14】:

              尝试打开另一个项目的“.storyboard”,然后返回导致 Xcode 崩溃的项目!

              我在昨天还不错的项目中遇到了 Xcode 9.1 (9B55) 的确切问题。今天,当我试图打开任何“.storyboard/.xib”文件时,Xcode 崩溃了!

              正如一些人建议的那样,我删除了所有“&lt;nil key=...”标签内容。 它有效,但同时我打开了另一个项目的故事板。然后我恢复了所有的更改,它再次起作用了。

              这似乎不是由“&lt;nil key=...”标签内容引起的,而是由 Xcode 所处的一些奇怪状态引起的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-03-13
                • 2018-03-16
                • 2013-09-27
                • 2015-10-26
                • 2012-09-22
                • 2014-11-24
                • 2016-01-11
                • 1970-01-01
                相关资源
                最近更新 更多