私は通常の操作を行います。サーバーからデータを要求し、テーブルビューをreloadSections
で更新します。しかし、多くのクラッシュログが発生します。 reloadData
に電話すると、すべてがOKです。 reloadData
がうまく動作するとは言えますが、reloadSections
がより効率的に機能するようです。
誰にもアイデアはありますか?そして、データをconfigコンUITableViewのreloadSectionsメソッドが呼び出されました。
[_pomelo onRoute:@"onTlive" withCallback:^(NSDictionary *data) {
@strongify(self);
if (self.liveTableView) {
[self.liveTableView configData:data refresh:self.playerView.isScreenPortrait];
}
}];
とテーブルビューをリフレッシュ:
は、永続的な接続でサーバーからデータを取得
無効なアップデート:ここで
- (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と等しくなければなりませんそのセクション(挿入された0、削除された0)に挿入または削除された行の数をプラスまたはマイナスし、そのセクションに出入りする行の数をプラスまたはマイナスします。それはケースでクラッシュを引き起こして
reloadSection
方法は、セクションと行カウンタは更新されませんので、あなたがセクションまたは行カウンタを変更し、あなたのUITableView
は異なるカウンタを持っているとき
ここに、uitableをリロードするために使用したコードを追加してください。 – KAR
どのようなクラッシュがログに記録されているのかをここに示し、あなたの要件を明確にしてください。 – vaibhav