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

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

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

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

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

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

【问题讨论】:

    标签: ios parse-platform synchronous uiprogressview uiprogressbar


    【解决方案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() ,它是同步的,并且在世界上花费了所有时间。另一方面,您的示例实际上保存得非常快,以至于不需要活动视图。谢谢,伙计!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多