看代码:
#viewDidLoad
[self getActivityListFromNetwork];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(refreshActivityListFromNetwork)
name:@"backRefresh"
object:nil];
#refreshActivityListFromNetwork
- (void)refreshActivityListFromNetwork{
[self.dataArray removeAllObjects];
[self getActivityListFromNetwork];
[self.mainTableView headerEndRefreshing];
}
问题是:如果注销后重新登录的话会有一定概率出现重复数据。
分析原因是点击登录后,页面加载执行了getActivityListFromNetwork这个方法。这时候去请求数据。在没有返回数据前执行了refreshActivityListFromNetwork又一次去请求了数据。导致两次请求获得的数据都加载出来了。。。
Exécutez simplement RemoveAllObjects et reloadData une fois que chaque demande de données est réussie. De plus, il est préférable de fournir un mécanisme de mise en cache correspondant pour votre méthode de demande réseau. Lorsqu'il n'y a pas de nouvelles données, il n'est pas nécessaire de mettre à jour la source de données.
Posez et répondez à vos propres questions. . . .
Pourquoi la requête réseau ne revient-elle pas pour récupérer les données avant de s'exécuter
[self.dataArray removeAllObjects];
?Je suis d'accord avec toi à l'étage, la source de données RemoveAllObjects doit être placée dans le réseau request success
Euh, pourquoi l'écrivez-vous d'une manière si dégoûtante ? Agent, le bloc mérite le vôtre