0

我正在将大量数据导入 CoreData。我想显示导入进度的进度条。

首先,我显示进度条。然后我在数我要导入的数据。然后我设置了一个for循环:

  • 在这个 for 循环中,我首先设置 coreData 对象。
  • 然后我正在增加进度视图。

在这个循环之后,我保存了 coreData 对象并隐藏了 progressBar。

[self.progressView show];

int allFiles = [file count];
int currentFile = 1;

for(NSString *trackid in file) {
    [entidyDesc setName:[track objectForKey:@"theKey"]];
    float progress = [self convertAmountForProgressBar:currentFile maxNum:allFiles];
    self.progressView.progressBar.progress = progress;
}

[self.progressView hide];
[self.managedObjectContext save:nil];

(简化)

问题是,progressBar 没有更新。它显示,但在 for 循环完成后首先更新,而不是隐藏。因此,进度条仅在 for 循环之后短暂显示。

任何想法如何解决这个问题?

4

2 回答 2

2

在另一个线程中执行导入并将进度信息发送到主线程-[NSObject performSelectorOnMainThread:withObject:waitUntilDone:]

享受调试并发问题的乐趣。

你也可以用 CATransactions 做一些可怕的事情,但我的印象是 UIKit 应该为你处理所有这些。

于 2010-11-21T06:39:48.460 回答
0

您是否尝试过启用线程动画:

- (void)setUsesThreadedAnimation:(BOOL)flag

更多内容在 Apple 的文档中。

于 2010-11-20T21:10:36.157 回答