ios - 网络请求数据重复的可能
怪我咯
怪我咯 2017-04-18 09:53:42
0
5
472

看代码:

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(5)
伊谢尔伦

各データ リクエストが成功した後に、removeAllObjects と reloadData を実行するだけです。また、新しいデータがない場合は、データ ソースを更新する必要がなく、ネットワーク リクエスト メソッドに対応するキャッシュ メカニズムを提供することをお勧めします。

いいねを押す +0
Peter_Zhu

自分で質問して答えてください。 。 。 。

いいねを押す +0
巴扎黑

[self.dataArray removeAllObjects]; を実行する前にデータを取得するためのネットワーク リクエストが返されないのはなぜですか?

いいねを押す +0
黄舟

私も上の階の意見に同意します。データ ソース RemoveAllObjects はネットワーク リクエストの成功に配置されるべきです

いいねを押す +0
小葫芦

ええと、なぜそんなに嫌な書き方をするのですか?エージェント、ブロックはあなた自身に値するものです

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート