我有一个在模拟器上运行良好的iOS应用程序,但在所有设备上崩溃并出现此错误:
<Warning>: *** Assertion failure in -[UINib initWithNibName:directory:bundle:], /SourceCache/UIKit/UIKit-3318.16.14/UINib.m:98
Apr 13 23:24:52 Feifan-Zhous-iPad splashboardd[14537]
<Error>: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: (name != nil) && ([name length] > 0)'
该应用程序位于Swift中,在Xcode 6.1.1上运行。这里的设备是一台运行iOS 8.1的iPad Mini 4,4(但崩溃发生在包括iPhone在内的所有设备上,从iOS 7.0开始)。
值得注意的是崩溃发生在应用程序启动之前(application:didFinishLaunchingWithOptions:
永远不会被调用)并且Xcode中的异常断点没有捕获任何内容。
该应用使用Main.storyboard
文件作为主界面文件。在Copy Bundle Resources阶段,它是不红色。该应用并未在任何地方使用initWithNibName:directory:bundle
。
是否有人遇到此错误并找到修复程序?很少有工作
答案 0 :(得分:0)
我有一个在模拟器上运行良好的iOS应用程序,但在所有设备上崩溃
看起来它必须是文件名大写的东西。我想您已经在Mac上安装了不区分大小写的文件系统,因此模拟器将名称“File”视为“文件”(甚至是“FILE”),而iOS设备具有区分大小写的文件系统,因此文件名区分大小写。
我认为您为初始视图控制器设置了错误的类名,但无法实例化。
答案 1 :(得分:0)
您可能正在initWithNibName:directory:bundle中初始化一个nib名称,该名称从未被调用过。
将初始化代码从initWithNibName:directory:bundle移动到awakeFromNib。
答案 2 :(得分:0)
我遇到了同样的问题,如果您使用错误的文件/引用名称注册nib文件,请检查rootViewController/InitialView
。如果我在进行网络通话时在UICollectionViewCells
注册了viewDidLoad
,那么就不会显示崩溃的位置。