问题标签 [nsprogress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
73 浏览

ios - 如何为多个 NSProgress 使用 observeValueForKeyPath?

我已经使用乘数连接从循环中为连接的对等体实现了文件发送功能。该代码如下。

它正在正确发送。我想在发件人设备上显示每个对等方的发送进度。我可以从 observeValueForKeyPath 方法中取得进展。但是我怎样才能从 observeValueForKeyPath 方法中单独识别每个发送进度。

0 投票
1 回答
1144 浏览

macos - 如何更新 NSProgressIndicator?

我有问题NSProgress。问题是NSProgressIndicator在此过程中没有更新,并且在过程结束时仅显示一小部分已完成的部分。本地化描述也仅在流程结束时显示,但已 100% 完成。

所以,我有一个使用一种方法的findRepeatsWithProgressReportingNSProgress

然后,在myVewContrloler我有 parentProgressrepeatsProgress中,totalUnitCount: 10并已将方法的任务findRepeatsWithProgressReporting 作为 childProgress 添加到repeatsProgress 使用 repeatsProgress.becomeCurrent(withPendingUnitCount: 10).

最后一部分是针对 KVO 的:

我已经添加了

在里面

我看到的是"Observed Something"在开始后立即打印两次,最后打印六次,中间没有打印(因为它预期用于更新过程)。可能是什么原因?

0 投票
1 回答
640 浏览

swift - 从 ViewController 函数循环中更新 NSProgress 显示

我又回来了蜂巢思维!

在我的 ViewController 类中,我有一个函数可以遍历数组中的一系列项目。我想要发生的是在循环的每次迭代中更新我的进度条,但它似乎在完成整个循环并退出我的函数之前不会更新屏幕上的进度条。

我很确定这只是因为每次通过应用程序循环时视图只会重绘一次(我可能在这里没有使用正确的术语。)

当我仍在 ViewController 函数循环中时,强制 ViewController 视图更新的正确方法是什么?

这基本上就是我现在正在做的事情:

当这不起作用时,我尝试在 progressBar.draw 方法之后添加一个 needsSetDisplay ,如下所示:

但它仍然没有工作。

我确信有一种方法可以完成我需要做的事情,但我怀疑它涉及一些更高级的东西,比如运行多个进程,因为我是 Swift 新手,所以我可能还没有资格做这些事情,自从我用 Obj-C 编码以来已经至少 10 年了(也就是我忘记了我所知道的大部分内容。)

谢谢!

编辑我尝试失败的另一件事是打电话progressBar.displayAsNeeded(),但它似乎也不起作用。

0 投票
2 回答
1063 浏览

ios - 如何使用/测试子 NSProgress 实例的 NSProgress userInfo 更改

我正在NSProgress一个库中实现支持,并且我编写了一些单元测试来测试一切是否正常工作。虽然理想情况下我希望能够传递一些额外的元数据(userInfo密钥本身不使用NSProgress,但供我的 API 的用户使用),但现在我只是想像文档所说的那样获取localizedDescriptionlocalizedAdditionalDescription工作。由于我正在测试的方法是从存档中提取文件,因此我设置了kindtoNSProgressKindFile并设置了与文件操作相关的各种键(例如NSProgressFileCompletedCountKey)。

我希望当我观察到localizedDescriptionKVO 的变化时,我会看到这样的更新:

处理“测试文件 A.txt”</p>

处理“测试文件 B.jpg”</p>

处理“测试文件 C.m4a”</p>

当我停在断点和工作实例上(po如下)时,这实际上就是我所看到的。但是当我的测试运行时,他们看到的只是以下内容,这意味着它没有看到我设置的任何键:localizedDescriptionNSProgresschildProgressuserInfo

0% 完成

0% 完成

53% 完成

100% 完成

100% 完成

看起来userInfo我在子NSProgress实例上设置的键没有传递给它的父实例,即使这样fractionCompleted做了。难道我做错了什么?

我在下面给出了一些抽象代码片段,但您也可以从 GitHub下载包含这些更改的提交。如果您想重现此行为,请运行-[ProgressReportingTests testProgressReporting_ExtractFiles_Description]-[ProgressReportingTests testProgressReporting_ExtractFiles_AdditionalDescription]测试用例。

在我的测试用例类中:

然后,在我的测试课上:

在我 incrementchildProgress.completedUnitCount时,这就是调试器中 userInfo 的样子。我设置的字段都表示:

当每个 KVO 通知返回时,如下所示notificationProgress.userInfo

0 投票
2 回答
1680 浏览

ios - NSProgress 在使用 KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECTS_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED 创建时崩溃

我使用 NSProgress 通知复杂任务的进度(该任务由许多子任务组成,可以由其他子任务组成)。
我在 startTask 方法中创建了主要进度:

没有当前进度:

(lldb) po [NSProgress currentProgress]

有时我会因奇怪的 stackTrace 崩溃:

0: 0x000000018539a7e8 in object_isClass ()
1: 0x0000000186b39fe0 in KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED ()
2: 0x0000000186b384bc in
NSKeyValueWillChangeWithPerThreadPendingNotifications ()
3: 0x0000000186cac9c0 in -[NSProgress _setValueForKeys:settingBlock:] ()
4: 0x0000000186cacc7c in -[NSProgress setTotalUnitCount:] ()
5: 0x0000000186cab718在 +[NSProgress progressWithTotalUnitCount:] ()

此代码在 mainThread 中执行。
为什么会发生这种情况,我可以做些什么来避免这种情况?

0 投票
4 回答
1052 浏览

ios - 如何在 Swift 中将多个子进度聚合为一个主进度

我正在尝试在 Swift 中使用 NSURLSession 同时下载多个文件。我想将所有下载进度状态合并为一个,以便在下载所有文件时显示 100%。目前我为每个文件下载完成获得 100%,但只有当所有文件都下载完成时我才需要 100%。我怎样才能在 Swift 中实现这一点?

这是我的 DownloadManager 类:

}

0 投票
1 回答
809 浏览

ios - 为什么 Progress.fractionCompleted 超过 1.0?

我注意到在某些情况下Progress.fractionCompleted超过 1.0 甚至重置回 0。我第一次注意到它是在使用 MultipeerConnectivity 框架时,我在其中构建了一个进度树,其中 Progress 实例从MCSession.sendResource.

下面的代码重现了奇怪的行为。只需复制粘贴即可。

以上产生以下输出:

最后一行显然应该以Fraction completed: 1.0. 注释掉最后一个元素childUnitCounts或将初始单元计数设置为0时,它可以正常工作。

我认为这是一个错误,但在报告它之前,我想确保我没有遗漏任何东西。

0 投票
1 回答
76 浏览

swift - Firebase 上传图片 | 使用 NSProgress

我必须将 3 张图片上传到 Firebase。我想通过NSProgress监控所有三张图片的上传进度。

您可以通过 NSProgress 对象currentUploadTask.snapshot.progress 获得事实上,如果您运行,您将获得进度百分比currentUploadTask.snapshot.progress.fractionCompleted

一旦我将所有“Firebase 进展”结合到一个重大进展中,事情就会分崩离析。

提前致谢 :)