我通过选择UITableView
段来更改数据源UISegmentControl's
。它只有2个段,对于这两种状态,我首次异步地将数据加载到2个不同的数组中#first; firstTypeNotificationsArray"和" secondTypeNotificationsArray"。主数组是UITableVIew
的dataSource,每次都有一个数组的数据,它命名为#34; allNotificationsArray"。
更改主数据源数据方法
-(void)changeNotificationsByType:(BOOL)firstType{
[allNotificationsArray removeAllObjects];
if(firstType){
[allNotificationsArray addObjectsFromArray:firstTypeNotificationsArray];
} else {
[allNotificationsArray addObjectsFromArray:secondTypeNotificationsArray];
}
[notificationsTable reloadSections:[NSIndexSet indexSetWithIndex:0]
withRowAnimation:UITableViewRowAnimationFade];
}
在调用方法changeNotificationsByType
之前,我检查我的数组计数是!= 0但是在调用之后我得到NSRangeException
。
numberOfRowsInSection方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return allNotificationsArray.count;
}
我尝试使用reloadSections
在主线程中调用dispatch_async
,但它没有帮助。我也尝试过做reloadData
而没有结果。
以下是崩溃日志:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 60 beyond bounds [0 .. 0]'
*** First throw call stack:
(0x265ec87b 0x3832adff 0x26502633 0xfcb9f 0x196879 0x3ee4a5 0x1a9dd17 0x1a9dd03 0x1aa27c9 0x265af555 0x265ada4f 0x26500129 0x264fff1d 0x2fac7af9 0x2a9889bd 0x10cc6d 0x38a78873)
libc++abi.dylib: terminating with uncaught exception of type NSException
转换UISegmentControl
并分别调用changeNotificationsByType
后,此崩溃加剧。此刻所有阵列都不是空的,我无法理解为什么我的应用程序崩溃了。