同步保存到 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 时的进度条的主要内容,如果未能解决你的问题,请参考以下文章
如何在service中同步更新通知activity中的进度条
怎样改变进度条的颜色?例如拷贝或下载时的进度条颜色,请具体说明怎样使用。谢谢!