swift - Xcode8 'Could not load NIB in bundle'

标签 swift storyboard swift3 ios10 xcode8

自从我将项目升级到 xcode8 和 swift3 后,我在 ios10 设备和模拟器上运行我的应用程序时遇到了麻烦。

我可以正常启动应用程序,但使用一段时间后出现以下错误:

*** Terminating app due to uncaught exception   
'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle:
'NSBundle </Users/****/Library/Developer/CoreSimulator/Devices/****/data/Containers/Bundle/Application/****/*****.app> (loaded)' 
with name 'Ncx-Ud-4zl-view-1i6-0r-ivc' and directory 'Main.storyboardc''
***

奇怪的是,我有时可以浏览相同的菜单或 View ,但 3 或 4 次后就会出现错误。

该应用程序在 ios9 设备上正常运行。

更新: 我最终解决了这个问题,将我的 CoreDataStackManager 类更新为 Swift3 sintax,并避免在我的 NSFetchedResultsControllers 上使用缓存。

最佳答案

我整个星期也一直在努力解决这个完全相同的问题,NIB 有时不会随机加载。我今天偶然发现了一些有趣的东西,它解决了我的问题:

(NSFetchedResultsController): couldn't read cache file to update store info timestamps (感谢 Donnit 的回答!)

简而言之,问题与 NSFetchResultsController 有关。我用它来检索和显示 CoreData 模型。如果您使用 NSFetchRequestController在您的应用程序中,您已经设置了自己的 cacheName在初始化函数中,Apple 在 iOS 10 中引入的一个错误似乎是每次保存托管对象上下文时都会在设备后台打开文件。 iOS 设备可以打开的最大文件数是 255,因此它无法打开和加载新的 NIB 文件,然后崩溃(这似乎就是我们遇到的情况)。

Donnit 进行了一些测试,结果表明该问题已在 iOS 10.2 测试版中得到解决,但在更新公开发布之前对此问题的临时修复是删除 cacheName来自您的NSFetchResultsController的。

不确定您是否有同样的问题,但它解决了我的所有问题。

关于swift - Xcode8 'Could not load NIB in bundle',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700675/

相关文章:

Swift 3 - 从核心数据中获取值(value)

ios - 按需重新加载 UITabBarController

ios - Swift3 框架模块为空

ios - 此类对于键 storyboardName 不符合键值编码

ios - 将一些 XIB/Storyboard 字符串标记为不可本地化

ios - 准备 segue 不允许我设置下一个 viewController 的 NSString

ios - iOS Swift3:URLSession共享数据任务显示错误

ios - 为什么我的 NSOperationQueue 在主线程上运行?

ios - Auto-Resize + Transform Rotation ==> 让它工作的最优雅的解决方案是什么?

ios - 调用的 Swift 结果未使用