찾다

 >  Q&A  >  본문

ios - 网络请求数据重复的可能

看代码:

#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又一次去请求了数据。导致两次请求获得的数据都加载出来了。。。

怪我咯怪我咯2771일 전480

모든 응답(5)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:55:42

    각 데이터 요청이 성공한 후에는 RemoveAllObjects 및 reloadData를 실행하세요. 또한 네트워크 요청 방법에 해당하는 캐싱 메커니즘을 제공하는 것이 가장 좋습니다. 새 데이터가 없으면 데이터 소스를 업데이트할 필요가 없습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:55:42

    자신만의 질문을 하고 답해보세요. . . .

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:55:42

    실행하기 전에 데이터를 가져오기 위해 네트워크 요청이 다시 오지 않는 이유는 무엇입니까[self.dataArray removeAllObjects];?

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 09:55:42

    위층의 의견에 동의합니다. 데이터 소스 RemoveAllObjects는 네트워크 요청 성공에 배치되어야 합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 09:55:42

    음, 왜 이렇게 역겨운 방식으로 작성하고 있나요? 요원님, 차단은 본인이 할 만해요

    회신하다
    0
  • 취소회신하다