Xcode8'无法在bundle中加载NIB'

时间:2016-09-26 10:39:49

标签: 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''
***

奇怪的是,我有时会浏览相同的菜单或视图,经过3到4次后,它会给我错误。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

Donnit已经做了一些测试,显示这已经在iOS 10.2的测试版中得到了解决,但在此期间暂时修复此问题,直到更新公开发布为止cacheNameNSFetchResultsController移除}&#39; S

不确定您是否有同样的问题,但它为我修复了一切。