Xcode 7 Beta 4 - 每次第二次运行项目时都找不到故事板

时间:2015-08-03 21:33:14

标签: ios xcode storyboard

它可能是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错误吗?

2 个答案:

答案 0 :(得分:1)

将Xcode更新为稳定版本。

答案 1 :(得分:0)

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

1:确保故事板实际存在。

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

如果故事板不存在,请跳至步骤3.否则......

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

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

在警告框中询问您是要将文件移至“废纸篓”还是仅删除参考,请点击删除参考

3:重新添加故事板。

打开对话框,将故事板添加回项目,如下所示:

File - &gt; Add Files to Project...

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

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

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

5:重新安装Xcode。

你说得对。从Mac上删除Xcode,及其在库中的所有文件,然后重新安装。此问题可能是由于安装错误导致的,因此您可能需要将其卸载并重新安装。

更技术性的解释:

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

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

如果MainStoryboard.storyboard无法读取,或者它不可写,则Xcode不会将其包含在Bundle中。

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

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

要弄清楚出现此问题的原因,需要更多信息。也许我们可以向Apple展示这一点,他们也许能够通过Xcode 7 GM解决这些信息!