同步保存到 parse.com 时的进度条

Posted

技术标签:

【中文标题】同步保存到 parse.com 时的进度条【英文标题】:Progress bar while synchronous save to parse.com 【发布时间】:2015-03-04 20:27:14 【问题描述】:

有人知道我如何在将同步保存到 parse.com 时显示 UIProgressView 吗?

我尝试在开始同步保存之前显示进度视图并在保存完成后将其隐藏,但这不起作用。它不显示进度视图,而是立即开始保存。

我开始认为同步保存会占用其他所有功能,而异步保存最适合此问题。但就我而言,我必须同步保存,因为我在保存后直接显示保存的数据。

有人知道这是怎么做到的吗?

self.startProgress()
self.saveSynchronousToParse()
self.stopProgress()

【问题讨论】:

【参考方案1】:

“同步”方法也称为“阻塞”方法 - 它有效地阻塞当前线程,直到它完成。

默认情况下,您的应用在主队列中运行,这是执行所有 UI 任务的队列,因此一旦您调用“saveSynchronousToParse”(可能调用 save 或一些类似的同步 Parse 函数)您的 UI将冻结,直到任务完成。您可能会在控制台中收到一条警告,说明您正在主线程上执行同步任务。

在这种情况下,进度视图实际上没有意义,因为您不会从 Parse API 获得任何关于保存信息的进度的反馈。

UIActivityView 更有意义。使用UIActivityView后,您可以使用以下内容来实现您的目标

self.activityView.startAnimating()

self.somePFObject.saveInBackgroundWithBlock  
(success: Bool!, error: NSError!) -> Void in
    dispatch_async(dispatch_get_main_queue(),
       self.activityView.stopAnimating()
    );
    if success 
        println("success")
     else 
        println("\(error)")
    

【讨论】:

这是 Paulw11 的好东西。通过这种保存,我实际上不需要activityView。早些时候,我使用 SaveEventually() 保存,因为它声明最终保存。如果对我来说这没有用,因为我在下一个 segue 中显示了保存的数据,并且一旦 segue 启动它就没有保存。然后我使用了 Save() ,它是同步的,并且在世界上花费了所有时间。另一方面,您的示例实际上保存得非常快,以至于不需要活动视图。谢谢,伙计!

以上是关于同步保存到 parse.com 时的进度条的主要内容,如果未能解决你的问题,请参考以下文章

持续时间长于更新时的 Qt 进度条动画

使用 XMLHttpRequest 上传大文件时的进度条

如何在service中同步更新通知activity中的进度条

怎样改变进度条的颜色?例如拷贝或下载时的进度条颜色,请具体说明怎样使用。谢谢!

SwiftUI:如何根据滚动视图的用户当前滚动位置同步/更改进度条进度?

将嵌入式 YouTube 视频时间戳同步到自定义进度条