45

我正在使用新的 xcode 4.5,我在某些视图控制器上有这行代码:

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"];
if(cell==nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
                                                 owner:self 
                                               options:nil];
    cell = [nib objectAtIndex:0];
} 

当我运行应用程序时抛出:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“NIB 数据无效。” 在 LoadNib 线上,那是什么?这个xcode是苹果垃圾吗?

4

8 回答 8

71

我遇到了同样的问题,并通过取消选中“实用工具”中“文档检查器”窗格上的“使用自动布局”复选框来修复它。

于 2012-07-07T14:29:45.920 回答
58

取消选中下图中突出显示的“使用自动布局”。Xcode 4.5 默认为您添加到项目中的新 nib 文件启用此属性。取消选中自动布局复选框解决了问题

于 2012-10-11T08:14:54.467 回答
8

我刚刚遇到了这个问题,并将其追踪到一个 UIButton,该 UIButton 的 Title 字段在 Attributes Inspector 中设置为 Attributed。将其更改为普通解决了该问题。如果我没记错的话,我在 Xcode 的最后一个版本中添加了这个按钮,然后也遇到了问题。

于 2012-07-03T05:29:31.760 回答
6

对我来说,这是 Jason Coco 的评论和 tomgerhardt 的回答的结合:我的应用程序针对 iOS5,我升级到 Xcode 4.5 并创建了一个新的 NIB。默认情况下,这针对 iOS6,导致崩溃。我在 NIB 的文件检查器窗口中将其设置为 iOS5。

然后我得到一个编译器错误,告诉我 iOS5 不支持使用自动布局,在文档检查器中打开了它,我的问题得到了修复。

于 2012-09-26T10:13:29.037 回答
4

我正在使用 Xcode 4.5 和 iPhone 模拟器 5.0,并且在显示第一个表时出现同样的错误。按照“取消选中自动布局”的建议,我通过将文档版本控制切换到 iOS 5.0 来实现它。(故事板已选择 -> 文件识别选项卡 -> 界面生成器文档 -> 文档版本控制。)已取消选择自动布局。

于 2012-10-02T15:29:05.407 回答
2

因此,在尝试了大约一个小时后,我发现了问题所在。确实是上面描述的:确保您的 .xib 设置为与您的主应用程序编写的相同的目标版本(在这种情况下,很可能 < 6.0),并取消选中选项中的“使用自动布局”特别是.xib。

它可以在模拟器中运行的原因是因为您的模拟器实际上正在运行 iOS6。尝试使用具有较旧 iOS 的设备时,将导致此错误。我的问题是,我正在创建一个自定义 TableViewCell,默认情况下它是针对 iOS 6 的,并且选中了“使用自动布局”。这是我的罪魁祸首。

希望我能够拯救有人因这个错误而遭受的悲痛!

于 2012-10-04T02:11:37.593 回答
2

在为我的所有 .xib 文件禁用自动布局后,我仍然遇到错误。这是因为我在 .xib 文件中为 UILabel 使用了 Text -> Attributed。

将其设置为平原后,错误消失了。

于 2013-02-08T11:55:03.373 回答
0

"loadNibNamed:" 之后的名称必须是 nib 文件的名称(在屏幕左侧的项目导航器中),有时人们会在 CellForRowAtIndexPath (静态 NSString ...) .

这个小故障可能是你的问题吗?

于 2013-02-16T13:40:11.710 回答