Ios 在事先不知道“的情况下”的NSProgress树;“尺寸”;孩子们
我确信这已经发生在某人身上,但我找不到可信的来源(在Stackoverflow或其他地方)来解决这个问题 我必须下载(有限)数量的文件。在下载之前我不知道它们的大小。它们的大小可能会有很大的变化,在开始下载之前我不知道 我经常会有9个非常小的文件和1个非常大的文件。 如果我使用带有“children”功能的Ios 在事先不知道“的情况下”的NSProgress树;“尺寸”;孩子们,ios,objective-c,nsprogress,Ios,Objective C,Nsprogress,我确信这已经发生在某人身上,但我找不到可信的来源(在Stackoverflow或其他地方)来解决这个问题 我必须下载(有限)数量的文件。在下载之前我不知道它们的大小。它们的大小可能会有很大的变化,在开始下载之前我不知道 我经常会有9个非常小的文件和1个非常大的文件。 如果我使用带有“children”功能的NSProgress,我会很快显示90%的完成率,那么由于最后一个文件要大得多,UI看起来会卡住(即使不是这样) 下面是一个示例代码,其中我模拟了一个大文件 -(void)viewDidLoa
NSProgress
,我会很快显示90%的完成率,那么由于最后一个文件要大得多,UI看起来会卡住(即使不是这样)
下面是一个示例代码,其中我模拟了一个大文件
-(void)viewDidLoad
{
[超级视图下载];
nbTasks=10;
Main Progress=[NSProgress progressWithTotalUnitCount:nbTasks];
[自行发射];
}
-(无效)发射{
对于(int i=0;i
由于您在开始下载之前不知道其重量,因此无法将更改为当前的PendingUnitCount
,您将如何处理这种情况
编辑:这就是我现在要做的:
首先,我撒谎了。我不下载文件,而是从数据库下载数据,但最终也是同样的问题
在创建我的根NSProgress
之前,我从后端下载对象的数量(选择count(*)from…
)。有了这个,我可以用正确的“权重”调用becomeCurrentWithPendingUnitCount
,并且进度看起来更“平稳”
当然,这对我来说并不理想,因为我必须等待一段时间才能显示第一个NSProgress
,这会让我在后端执行更多查询,但至少体验要好一点
如果我能去掉这个,那就更好了。有什么想法吗?我刚刚添加了一个我正在使用的“变通方法”