Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在事先不知道“的情况下”的NSProgress树;“尺寸”;孩子们_Ios_Objective C_Nsprogress - Fatal编程技术网

Ios 在事先不知道“的情况下”的NSProgress树;“尺寸”;孩子们

Ios 在事先不知道“的情况下”的NSProgress树;“尺寸”;孩子们,ios,objective-c,nsprogress,Ios,Objective C,Nsprogress,我确信这已经发生在某人身上,但我找不到可信的来源(在Stackoverflow或其他地方)来解决这个问题 我必须下载(有限)数量的文件。在下载之前我不知道它们的大小。它们的大小可能会有很大的变化,在开始下载之前我不知道 我经常会有9个非常小的文件和1个非常大的文件。 如果我使用带有“children”功能的NSProgress,我会很快显示90%的完成率,那么由于最后一个文件要大得多,UI看起来会卡住(即使不是这样) 下面是一个示例代码,其中我模拟了一个大文件 -(void)viewDidLoa

我确信这已经发生在某人身上,但我找不到可信的来源(在Stackoverflow或其他地方)来解决这个问题

我必须下载(有限)数量的文件。在下载之前我不知道它们的大小。它们的大小可能会有很大的变化,在开始下载之前我不知道

我经常会有9个非常小的文件和1个非常大的文件。 如果我使用带有“children”功能的
NSProgress
,我会很快显示90%的完成率,那么由于最后一个文件要大得多,UI看起来会卡住(即使不是这样)

下面是一个示例代码,其中我模拟了一个大文件

-(void)viewDidLoad
{
[超级视图下载];
nbTasks=10;
Main Progress=[NSProgress progressWithTotalUnitCount:nbTasks];
[自行发射];
}
-(无效)发射{
对于(int i=0;i
由于您在开始下载之前不知道其重量,因此无法将
更改为当前的PendingUnitCount
,您将如何处理这种情况

编辑:这就是我现在要做的:

首先,我撒谎了。我不下载文件,而是从数据库下载数据,但最终也是同样的问题

在创建我的根
NSProgress
之前,我从后端下载对象的数量(
选择count(*)from…
)。有了这个,我可以用正确的“权重”调用
becomeCurrentWithPendingUnitCount
,并且进度看起来更“平稳”

当然,这对我来说并不理想,因为我必须等待一段时间才能显示第一个
NSProgress
,这会让我在后端执行更多查询,但至少体验要好一点

如果我能去掉这个,那就更好了。有什么想法吗?

我刚刚添加了一个我正在使用的“变通方法”