1

私のアプリは、何千もの製品データを表す非常に大きな JSON データのフィードを取得しています。データを解析して CoreData に保存した後 (すべてバックグラウンド スレッドで)、UITableView解析後にデータを表示すると、メイン スレッドで行われるため、UI がブロックされます。しかし問題は、UI が数秒間ブロックされたままになり、ユーザー フレンドリーではないことです。では、UI をブロックせずにデータのリロードを処理するにはどうすればよいでしょうか?

//...
//After parsing data, reload UITableView
[self.tView reloadData];

編集:

UITableViewデータを解析し、データをリロードし、オブジェクトがすべてのデータを表示した後、私の問題を再度説明することがあります。その後、アプリを再び使用できるようになるまで、数秒間 UI がブロックされます。

ここに私の関連コードがあります:

    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON){
    //Parse data
    [self.tView reloadData];//Display data
    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
    //Save data
    }];

    }failure:^(NSURLRequest *request, NSHTTPURLResponse *response,NSError *error, id JSON){
    //
    }];
    [operation start];
}
4

2 に答える 2

0

JsonNSThreadデータをフェッチするメソッドを呼び出し、フェッチ後に同じメソッドでテーブルをリロードするために使用します。

[NSThread detachNewThreadSelector:@selector(GetJsonDataAndReload) toTarget:self withObject:nil];

したがって、このプロセスはユーザーの操作をブロックしません。

于 2013-06-20T04:20:30.250 に答える