【问题标题】:Thread 1 signal SIGABRT can't load Main.Storyboard线程 1 信号 SIGABRT 无法加载 Main.Storyboard
【发布时间】:2015-08-02 21:17:53
【问题描述】:

我不知道我做了什么,但我搞砸了我的应用程序,现在它在加载之前崩溃了,我收到了这个错误:

*** Terminating app due to uncaught exception 
'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 
'NSBundle </Users/MasonSatnick/Library/Developer/CoreSimulator/Devices/9F0F56D8-AA2C-459F-84A3-BB17F5982716/data/Containers/Bundle/Application/A84FCDB3-1F61-486F-A108-863858F7AD76/Dodge The Box.app> 
(loaded)' with name 'Main''

我该如何解决这个问题?

【问题讨论】:

  • 你有一个名为 Main.storyboard 的故事板吗?
  • @matt 是的,我愿意,它一直被命名为 Main.Storyboard

标签: ios xcode sigabrt


【解决方案1】:

第一件事是第一。退出 Xcode 但让模拟器继续运行。告诉模拟器重置。然后将 Derived Data 文件夹的所有内容清理干净,扔掉。

现在启动 Xcode,看看问题是否奇迹般地解决了。

如果没有,请检查您的 Info.plist。它应该有一个值为“Main”的“Main storyboard file base name”条目。如果它已转换为其他条目(例如,主 nib 文件),请修复它。

【讨论】:

  • 嗯,我的 info.plist 可能搞砸了。我删除了它并制作了一个新的,但我以一种搞砸的方式完成了它。我透露了文件的位置,但它不在正确的应用程序文件夹中,所以我只是移动了它,现在它是红色的。当我现在启动应用程序时,它说 into.plist 无法打开,因为没有这样的文件。嗯……我现在该怎么办
  • 我想我需要一个全新的 info.plist,你能帮我设置一下吗,因为我不知道我在做什么
  • 新建一个项目。
【解决方案2】:

由于无法看到您的项目,我将尝试一些可能是问题的解决方案。

  1. 确保在 Target > General 中选择了正确的 storyboardFile

  2. 确保检查您的 Main.storyboard 以查找您正在使用的目标。就我而言,它是“说唱应用”

  1. 如果这些都不是问题 右键单击​​ Main.Storyboard 并单击在查找器中显示并确保您的查找没有移动。如果是这种情况,Main.Storyboard 很可能是红色的。

  2. 按住 Shift + Option + Command + K,然后按“清理”。然后退出 Xcode 并重新打开。

如果它仍然给你这个答案的问题评论和新信息,我会尝试进一步帮助。

编辑: 以下是重新创建 Info.Plist 文件的步骤。

  1. 删除您当前的 .plist 文件。

  2. 键入 Command + N > iOS > 资源 > 属性列表

  3. 非常重要,将文件命名为“Info”,否则将无法正常工作。

  4. 右键单击您的新 info.plist > 打开为... > 源代码。

  5. 突出显示所有内容并粘贴下面的代码(注意:对于更多读者,请将“mason”更改为您的公司标识符)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>com.mason.Dodge-The-Box</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>Main</string>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationPortraitUpsideDown</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    </dict>
    </plist>
    
  6. 右键单击您的 info.plist 文件 > 查看为... > 属性列表。

  7. GO Target > build Settings > 搜索“info.plist 文件”

  8. 确保值为“我的应用名称/Info.plist”

  9. Shift + Command + option + K > 按“清理”

  10. 构建并运行!

【讨论】:

  • 所有这些都是正确的,我认为我的 info.plist 搞砸了
  • 删除 info.plist 有什么原因吗?还是意外?如果您想恢复旧的 info.plist 或想修复新的 info.plist,我可以提供帮助。让我知道哪个,我会发布另一个答案
  • 我想我已经把旧的弄丢了...你能帮我做一个新的吗?这将是一个巨大的帮助
  • 在 Xcode 中转到文件 > 恢复快照...不要按恢复!我们只是想看看您是否有任何可用的快照。在下面评论是或否。
  • 你可以删除它,抱歉我到现在才检查
【解决方案3】:

我的设置是:

但我必须将其设置为:

通常您需要选择的值在下拉列表中。你只需要选择它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    相关资源
    最近更新 更多