如果重要的话:-我正在使用情节提要-核心数据-xcode 4.6
我的应用程序有一个用于特定视图的 UITableViewController。在这种情况下,如果用户单击一个按钮,软件会经历几个过程,从 Internet API 下载数据并将其保存到核心数据中。我相信这是一个资源消耗,这就是为什么我试图在单独的线程中完成这些进程。
注意: - 有一个操作顺序,因为腿取决于交换。交换取决于种族和位置。位置取决于种族。否则我会异步执行所有内容。
问题: - 这是我第一次与 Grand Central Dispatch 合作。我不确定我做对了。- 如果我注释掉数据处理 UIProgressView 是可见的,并按预期更新。随着数据处理到位,系统似乎陷入了困境,甚至无法显示 UIProgressView。
管理下载和进度的方法如下。
- (IBAction)downloadNow:(id)sender {
[progressView setHidden:NO];
[progressView setProgress:0.1 animated:YES];
dispatch_sync(backgroundQueue, ^(void){
[self saveRace];
[self updateProgress:0.2];
});
dispatch_sync(backgroundQueue, ^(void){
[self savePositions];
[self updateProgress:0.3];
});
dispatch_sync(backgroundQueue, ^(void){
[self downloadExchanges];
[self saveExchanges];
[self updateProgress:0.4];
});
dispatch_sync(backgroundQueue, ^(void){
[self downloadLegs];
[self saveLegs];
[self updateProgress:0.5];
});
dispatch_sync(backgroundQueue, ^(void){
Utilities *utilities = [[Utilities alloc] init];
[utilities calculateStartTimes:race with:managedObjectContext];
[self updateProgress:1.0];
});
}
- (void)updateProgress:(double)completedPercentage {
if (completedPercentage == 1.0) {
[self goHome];
} else if ([importExchanges count] > 0) {
[progressView setProgress:completedPercentage animated:YES];
}
}
任何帮助是极大的赞赏。