【问题标题】:Xcode 7 Beta 4 - Cannot find storyboard every 2nd time I run the projectXcode 7 Beta 4 - 每次运行项目时都找不到情节提要
【发布时间】:2016-12-02 23:56:30
【问题描述】:

这可能是 Xcode 中的 beta-prerelease-bug,但有没有其他人遇到过同样的事情?

我清理了项目 - 运行它 - 一切都很好。

然后我停止项目 - 再次运行它 - 只是黑屏和这个日志:

2015-08-03 23:22:30.743 XXXXXXX[12221:2892479] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'MainStoryboard' in bundle NSBundle </private/var/mobile/Containers/Bundle/Application/920917A0-44DF-4B5F-91A8-BB669DDF5F0D/XXXXXXXX.app> (loaded)'
*** First throw call stack:
(0x1822542d8 0x193f200e4 0x18728e810 0x186f59edc 0x186f59074 0x186f5770c 0x18aa893c8 0x18220c27c 0x18220b384 0x1822099a8 0x1821352d4 0x186d383d0 0x186d32f40 0x1001ac504 0x1945caa08)
libc++abi.dylib: terminating with uncaught exception of type NSException

然后我可以清理它并在所有地方做同样的事情......

是的,故事板已正确添加。它也在 info.plist 中正确添加,我也尝试将其删除并再次添加。结果相同。

更新我

在最新的 Xcode Beta 5 中也会发生同样的事情。

更新 II

这是我第二次在模拟器中运行的日志。

2015-08-10 12:09:19.552 XXXXX[32346:418981] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'MainStoryboard' in bundle NSBundle </Users/johndoe/Library/Developer/CoreSimulator/Devices/9685DA45-378D-48AC-BF8C-0DD2EF24C9B3/data/Containers/Bundle/Application/17882AD9-E024-41A1-9E9B-9DC2C2845EA5/XXXXX.app> (loaded)'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001116e69b5 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000112927deb objc_exception_throw + 48
    2   UIKit                               0x000000010f4564f7 -[UIStoryboard name] + 0
    3   UIKit                               0x000000010ed9b310 -[UIApplication _loadMainStoryboardFileNamed:bundle:] + 58
    4   UIKit                               0x000000010ed9b664 -[UIApplication _loadMainInterfaceFile] + 260
    5   UIKit                               0x000000010ed99fc9 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1383
    6   UIKit                               0x000000010ed97390 -[UIApplication workspaceDidEndTransaction:] + 188
    7   FrontBoardServices                  0x000000011347b7ac -[FBSSerialQueue _performNext] + 192
    8   FrontBoardServices                  0x000000011347bb1a -[FBSSerialQueue _performNextFromRunLoopSource] + 45
    9   CoreFoundation                      0x0000000111612b21 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    10  CoreFoundation                      0x0000000111608a4c __CFRunLoopDoSources0 + 556
    11  CoreFoundation                      0x0000000111607f03 __CFRunLoopRun + 867
    12  CoreFoundation                      0x0000000111607918 CFRunLoopRunSpecific + 488
    13  UIKit                               0x000000010ed96d2d -[UIApplication _run] + 402
    14  UIKit                               0x000000010ed9b99e UIApplicationMain + 171
    15  Teazr                               0x000000010e78912f main + 111
    16  libdyld.dylib                       0x0000000112ecc92d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

会不会是新 SDK 中的某种 Facebook 错误?

【问题讨论】:

  • 另外,尝试重置模拟器。过去曾出现过一些错误,即生成的应用程序包中的文件并未在构建和运行时全部复制。也许这里发生了类似的事情。
  • @RobGlassey 它发生在模拟器 + 设备中。
  • aa并且重置没有帮助
  • 当调用[UIStoryboard storyboardWithName]; 或类似的东西时,就会发生该错误。它与 Facebook SDK 无关。
  • 您解决了吗?今天才开始发生在我身上

标签: ios xcode storyboard


【解决方案1】:

将 Xcode 更新到稳定版本。

【讨论】:

  • 请注意 XCode 7 (beta) 已经过时 - 我们现在应该运行 XCode 8.1。
【解决方案2】:

从崩溃日志来看,很明显Xcode在App的Bundle中找不到MainStoryboard.storyboard。以下是我建议您采取的步骤,以便问题停止。


1:确保情节提要确实存在。

这涉及打开 Finder,进入项目目录,并确认 MainStoryboard.storyboard 实际上在项目文件夹中,它存在,并且是可读/可写的。

如果情节提要不存在,请跳至步骤 3。否则...


2:从 Xcode 项目中删除对 MainStoryboard.storyboard 的引用。

在左侧的文件列表中,单击MainStoryboard.storyboard 将其选中。然后,点击 [Command] + [Delete]。

在询问您是否要将文件移至回收站或只是删除参考的警告框中,单击删除参考


3:重新添加情节提要。

打开对话框以将情节提要添加回项目,如下所示:

File -> Add Files to Project...

导航到项目的文件夹并重新添加MainStoryboard.storyboard


4:整理项目,构建,再次运行。

只需清理项目,构建它,然后再次尝试运行它。 两次。


5:重新安装 Xcode。

你没听错。从 Mac 上删除 Xcode,以及它在库中的所有文件,然后重新安装。此问题可能是由于安装错误造成的,因此您可能需要将其卸载并重新安装。


更技术性的解释:

代码找不到MainStoryboard.storyboard,因为它似乎不存在于应用程序包中。对于那些没有接受过捆绑的人来说,它也被称为“二进制”。 Bundle 是开发人员放置应用程序需要在本地访问的资源的地方。在构建时,Xcode(应该)将 Bundle 中的所有文件放入并使其成为 Bundle。

删除引用并重新添加它应该让它始终将其添加到捆绑包中,而不仅仅是在每次运行时。

如果MainStoryboard.storyboard 不可读或不可写,Xcode 将不会将其包含在 Bundle 中。

为什么它只能在 50% 的时间内工作,这对我来说很奇怪,因为 Xcode 6 每次都会运行。创建一个全新的项目并运行它不会导致编译器出错,因为每个新项目都是从模板创建的。

如果 Xcode 没有执行 Apple 开发人员在模板中放置的代码(例如 SpriteKit 的默认“Hello world!”消息),那么 Xcode 有问题。卸载并重新安装。

要弄清楚为什么会出现此问题,需要更多信息。也许我们可以把这个展示给 Apple,他们或许可以通过 Xcode 7 GM 修复这些信息!

【讨论】:

  • @SimonDegn 好吧,那我不太清楚。
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 2014-09-14
  • 2015-10-12
  • 2021-04-09
  • 2017-07-16
相关资源
最近更新 更多