打开故事板时xcode 9崩溃

时间:2017-09-20 00:09:21

标签: ios xcode

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)>

14 个答案:

答案 0 :(得分:23)

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

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

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)

答案 1 :(得分:20)

我遇到了同样的问题,但在我的情况下,删除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

答案 2 :(得分:14)

我遇到了类似的问题。在我的情况下,我发现它通过文件浏览器打开时一直崩溃,而通过快速打开( CMD + SHIFT + O < / kbd>)不会导致XCode崩溃。

答案 3 :(得分:7)

问题是一个零关键标记(至少在我的情况下)

<nil key="simulatedBottomBarMetrics"/>

或更一般地

<nil key="<generic_name>"/>

那是它的对手

<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>

或更一般地

<<generic_name> key="generic_name"/>

删除所有这些解决了这个问题。

  1. 源代码
  2. 打开故事板
  3. 搜索并移除:<nil key="simulatedBottomBarMetrics"/>或任何<nil key="<generic_name>"/>(将<generic_name>替换为您的特定代码名称)
  4. 搜索并移除其对应部分:<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>或任何<< generic_name > key="generic_name"/>(将<generic_name>替换为您的特定代码名称)
  5. 通常保存并打开故事板
  6. 享受
  7. 编辑:

    此标记似乎是相关的,位于UITabBarController Storyboard源代码中,但是它们的对应点分散在UIViewControllers UITabBarController附近。可以是一个,两个或更多级别。

答案 4 :(得分:3)

我为我的案子找到了一个解决方案。它从UITabBarViewController崩溃了。

  1. 打开故事板作为源代码
  2. 搜索您的UITabBarViewController
  3. 删除标签栏
  4. 以“界面构建器”
  5. 打开故事栏
  6. 创建新标签栏并连接所需的根视图控制器
  7. 正如Michele Schillaci所说,您可以尝试删除一些视图控制器并检查是否能解决问题。

答案 5 :(得分:2)

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

  

Interface Builder

     

配置为storyboard或xib中的系统项的UITabBarItem会导致构建失败。 (34197132)

     

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

答案 6 :(得分:1)

我删除了tabBarController但它没有用。所以我试过了(来自@Vlad Valentin):

  1. 打开故事板作为源代码。
  2. 搜索 <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>

    storyboardIdentifier="mainViewController"
  3. customClass="MainViewController"<connections>..</connections>scene对您很重要。复制并粘贴它。

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

答案 7 :(得分:1)

轻松修复:

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

E.g:

<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"/>

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:1)

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

在我的Mac的Applications目录中找不到这些版本,因此我意识到它们在Downloads目录中处于休眠状态。我所做的就是删除所有这些并删除所有内容,情节提要不再冻结XCode 9.3。

答案 10 :(得分:0)

我替换了这个

<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不会崩溃

答案 11 :(得分:0)

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

看看XCode在故事板文件中修改了什么,它在文件的顶部,在'scenes'xml元素之前,它正在添加:

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

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

答案 12 :(得分:0)

我遇到了同样的问题:在Xcode 8中创建的故事板将在Xcode 9中挂起。通过逐个导出视图将我的故事板分开(使用Editor / Refactor到Stoyboard - 我没有做过的功能)知道存在,直到我被这个问题所震惊)我发现两个特定的视图导致Xcode挂起。

在这两个视图中,我向UITabBar添加了多个项目 - 左侧是一个按钮,右侧是一个灵活空间和一个按钮。如果Xcode试图显示它,它会挂起。如果我快速点击任何其他故事板,这些&#34;中毒&#34;看到的意见,它也会挂起。

因此,解决方案是在Xcode 8中打开项目,从TabBar中删除除一个项目之外的所有项目,删除任何Derived Data文件夹,退出Xcode 8,加载Xcode 9,执行产品/清洁,以及如果您&#39;很幸运,你会很高兴。

答案 13 :(得分:0)

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

我对Xcode 9.1(9B55)在昨天没问题的项目上遇到了这个问题。今天当我试图打开任何“.storyboard / .xib”文件时,Xcode崩溃了!

有些人建议我删除所有“<nil key=...”标记内容。 它工作,但同时我打开了另一个项目的故事板。然后我恢复了所有的更改,然后又恢复了工作。

这似乎不是由“<nil key=...”标签内容引起的,而是由Xcode变成的一些奇怪状态引起的。