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

Sim*_*egn 9 xcode storyboard ios

它可能是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
Run Code Online (Sandbox Code Playgroud)

然后我可以清理它,并做同样的事情......

是的,故事板正确添加.它也在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) 
Run Code Online (Sandbox Code Playgroud)

它可能是新SDK中的某种Facebook错误吗?

DDP*_*AGE 0

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


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

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

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


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

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

在询问您是否要将文件移至废纸篓或仅删除引用的警告框中,单击删除引用


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 修复此信息!