Swift n内部一致性异常';,原因:';获取500+;时无法在捆绑包中加载NIB;来自通讯簿数据库的记录
如果这个问题被重复,我很抱歉,但我无能为力,因为我已经尝试了所有可能的解决方案,但没有任何效果,因此我提出这个问题 我正在从通讯簿数据库一次性加载表视图中的近500条记录。如果记录很少,比如说50或100,那么我的表将毫无问题地显示出来。但是当记录的数量达到300+时,我得到一个崩溃,它说: ***由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“无法在中加载NIB。” bundle:'NSBundle (已加载)“名称为”GroupmemberCell“ 我读过一些其他表单,它们有解决方案,比如在Swift n内部一致性异常';,原因:';获取500+;时无法在捆绑包中加载NIB;来自通讯簿数据库的记录,swift,sqlite,uitableview,cocoa-touch,nib,Swift,Sqlite,Uitableview,Cocoa Touch,Nib,如果这个问题被重复,我很抱歉,但我无能为力,因为我已经尝试了所有可能的解决方案,但没有任何效果,因此我提出这个问题 我正在从通讯簿数据库一次性加载表视图中的近500条记录。如果记录很少,比如说50或100,那么我的表将毫无问题地显示出来。但是当记录的数量达到300+时,我得到一个崩溃,它说: ***由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:“无法在中加载NIB。” bundle:'NSBundle (已加载)“名称为”Group
构建阶段检查文件或检查iOS应用程序的包内容。我已经尝试了所有的方法,但没有任何效果。该文件在构建阶段存在,并且也被添加到我的应用程序文件的包内容中。我还删除了这些文件一次,也就是说,我完全删除了它们,并创建了一个新的UITableViewCell类,但随后也出现了崩溃
GroupmemberCell是我在表视图中添加的一个xib。下面是RowDataSource方法单元格的代码片段
static NSString *CellIdentifier = @"Cell";
GroupmemberCell *cell = (GroupmemberCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];;
if (cell == nil)
{
NSArray *cellxibfilepath = [[NSBundle mainBundle]loadNibNamed:@"GroupmemberCell" owner:self options:nil];
if (cellxibfilepath)
{
for(id cellObjects in cellxibfilepath)
{
if ([cellObjects isKindOfClass:[UITableViewCell class]])
{
cell = (GroupmemberCell*)cellObjects;
}
}
}
}
静态NSString*CellIdentifier=@“Cell”;
GroupmemberCell*单元格=(GroupmemberCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];;
如果(单元格==nil)
{
NSArray*cellxibfilepath=[[NSBundle mainBundle]loadNibNamed:@“GroupmemberCell”所有者:自选项:nil];
if(文件路径)
{
for(cellxibfilepath中的id CellObject)
{
if([cellObjects是类的种类:[UITableViewCell类]])
{
cell=(GroupmemberCell*)cellObjects;
}
}
}
}
这里可能有什么问题,比如相同的代码对100个记录集起作用而没有任何崩溃,但是如果我获取一组500多个记录并将它们显示在表中,就会出现崩溃
if (tableReloadArray.count!=0) {
[objtable reloadData];
}
为了获取我没有在后台打电话的记录,我尝试过一次,但也没有解决崩溃问题
我的想法是:我认为我一次加载了大量数据,这可能会给UI创建的主线程带来一些问题,因为我确实在数组中获取了数据,我检查了它们,然后只给出了重新加载表的命令
if (tableReloadArray.count!=0) {
[objtable reloadData];
}
if(tableReloadArray.count!=0){
[objtable reloadData];
}
我在许多应用程序中看到,它们以闪电般的速度加载1000多个数据——它们是如何做到的?他们的方法是什么,或者我缺少什么最佳实践,请指导我。在进行了大量的头脑风暴会议和喝了大量咖啡后,我使用“分析工具”清除了所有内存警告,然后使用“仪器工具”查看是否有泄漏也清除了它们。删除了派生数据并清理了应用程序,我就完成了
“分析工具”在整个应用程序中提出了大约67个问题,“仪器工具”显示了超过3-4个问题
我知道这听起来很愚蠢,但我这样做解决了我的车祸。希望这能帮助那些陷入同样问题的人