for () ループ内で、いくつかの JSON オブジェクトを解析しながら、アプリで一種の UIActivityIndicatorView を表示します。[UIActivityIndicatorView startAnimating] と [UIActivityIndicatorView stopAnimating] を配置して、解析の実際の END を表示する必要がある場所がわかりません (完全な for () ループの最後に)。これは単純化されたコードです:
- (void)parseMethod {
// other stuff
for (int i=0; i < [arrayJSON count]; i++) {
NSURL *url = [NSURL URLWithString:
[NSString stringWithFormat:
@"http://WWW.REMOTESERVERWITHJSONSOURCE.NET/%@",[arrayJSON objectAtIndex:i]]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSMutableDictionary *arrayMain = [JSON objectForKey:@"main"];
NSMutableDictionary *arrayMain2 = [JSON objectForKey:@"main2"];
[arrayA1 addObject:[arrayMain valueForKey:@"A1"]];
[arrayA2 addObject:[arrayWind valueForKey:@"A2"]];
// HERE FINISH PARSING AFJSONREQUESTOPERATION
// IF I PUT HERE [UIActivityIndicatorView stopAnimating] IT SHOWS AT THE END OF FIRST for () LOOP
[table reloadData];
[table scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"%@", [error userInfo]);
}];
[operation start];
// HERE START PARSING AFJSONREQUESTOPERATION
[UIActivityIndicatorView startAnimating]
}
// HERE FINISH THE for () LOOP ??
// IF I PUT HERE [UIActivityIndicatorView stopAnimating] IT SHOWS AGAIN AT THE END OF FIRST for () LOOP
}
// HERE FINISH THE parseMethod ??
// IF I PUT HERE [UIActivityIndicatorView stopAnimating] IT SHOWS AGAIN AT THE END OF FIRST for () LOOP
}
ご覧のとおり、[UIActivityIndicatorView stopAnimating] を配置する本当の場所を見つけることができません。最初の解析 (最初の for () ループ) の最後でどこでも停止します: したがって、完了を待つ方法があります。 for () ループで [UIActivityIndicatorView stopAnimating] (または別のメソッド) を呼び出します。ありがとう!
ALTERNATIVE 解析が速すぎて、UIActivityIndicatorView の表示と読み込みが見えないのではないでしょうか? この場合、一種のタイマー (またはスリープ (unsigned int)) を配置して、消える前に数秒待つ必要がありますか?