2017-01-13 2 views
-1

Я просто выполняю обычную операцию: запросите данные с сервера и обновите tableview на reloadSections, но я получаю много журналов сбоев. Если я позвоню reloadData, все будет в порядке. Хотя я знаю, что reloadData работает хорошо, кажется, что reloadSections работает более эффективно.
Есть ли у кого-нибудь идеи?Вызов UITableView reloadSections метод сбоя

Получить данные с сервера по постоянной связи:

[_pomelo onRoute:@"onTlive" withCallback:^(NSDictionary *data) { 
    @strongify(self); 
    if (self.liveTableView) { 
     [self.liveTableView configData:data refresh:self.playerView.isScreenPortrait]; 
    } 
}]; 

Затем CONFIG данные и освежить TableView:

- (void)configData:(NSDictionary *)data refresh:(BOOL)refresh { 
if (!data || data.allKeys.count == 0) { 
    return; 
} 
NSArray *liveArray = [data valueForKeyPath:@"body.data"]; 
[liveArray enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) { 
    NSArray *liveDetailInfo = [obj componentsSeparatedByString:@"|"]; 
    if (liveDetailInfo && liveDetailInfo.count > 0) { 
     NSArray *tliveInfo = [liveDetailInfo.lastObject componentsSeparatedByString:@"^"]; 
     SPBasketballLive *liveObject = [SPBasketballLive new]; 
     liveObject.type = tliveInfo[0]; 
     liveObject.time = tliveInfo[1]; 
     liveObject.team = tliveInfo[2]; 
     liveObject.playerId = tliveInfo[3]; 
     liveObject.score = tliveInfo[4]; 
     liveObject.text = tliveInfo[5]; 
     liveObject.quarter = ((NSString *)liveDetailInfo.firstObject).integerValue; 
     if (self.curMatch.liveInfo.count == liveObject.quarter) { 
      NSMutableArray *quarterArray = self.curMatch.liveInfo.firstObject; 
      [quarterArray insertObject:liveObject atIndex:0]; 
     } else { 
      NSMutableArray *quarterArray = [NSMutableArray new]; 
      [quarterArray addObject:liveObject]; 
      [self.curMatch.liveInfo insertObject:quarterArray atIndex:0]; 
     } 
    } 
}]; 
if (refresh) { 
    if (_curMatch.liveInfo.count > 0) { 
     [self.myTableView reloadSections:[NSIndexSet indexSetWithIndex:4] withRowAnimation:UITableViewRowAnimationNone]; 
    } 
} 
} 

Вот журнал аварии:

недействительным обновление : недопустимое количество строк в разделе 4. Количество строк, содержащихся в существующем разделе после обновления (98), должно быть равно t количество строк, содержащихся в этом разделе перед обновлением (96), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено, 0 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 въехал, 0 съехали)

+0

Пожалуйста, добавьте здесь код, который вы использовали для перезагрузки uitable. – KAR

+0

что вы получаете, пожалуйста, покажите здесь и уточните свои требования. – vaibhav

ответ

0

Вашего приложения разбилось, потому что reloadSection метод не будет обновлять раздел и строки счетчики, так что вызывает сбои в тех случаях, когда вы изменили раздел или строки счетчика и ваш UITableView имеют различные счетчики.

И когда вы используете reloadData его первый вызов numberOfSectionsInTableView, а затем numberOfRowsInSection называются так что ваш UITableView имеет правильные счетчики разделов и строки.

+0

Er, но я делаю демон, который показывает, когда я вызываю '' '' reloadSection'''', также запускается '' '' numberOfRowsInSection'''''. –

+0

Он называется 'numberOfSectionsInTableView'? –

+0

Я уверен, что и '' '' 'numberOfRowsInSection''', и' '' 'numberOfSectionsInTableView'''' запущены. –