更改dataSource时出现NSRangeException

时间:2015-09-14 12:36:15

标签: ios objective-c uitableview nsmutablearray datasource

我通过选择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后,此崩溃加剧。此刻所有阵列都不是空的,我无法理解为什么我的应用程序崩溃了。

0 个答案:

没有答案