ios - 仅在通过解析保存数据后执行/触发 segue

标签 ios swift parse-platform

我有一个奇怪的问题,用户通过文本框输入一些数据并点击确定,IBAction 函数会执行此操作。

@IBAction func savedata(sender: AnyObject) {
    var query = PFQuery(className:"xxxx")
    ....
    ....
    parseObj.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
    if success {
       println("Object Saved")
    } else {
       println("Error")
    }
    self.performSegueWithIdentifier("segueX", sender: self)
}

我想确保在执行 segue 之前完全保存此数据。我尝试在 prepareForSegue 中使用该函数,但注意到该对象直到下一个 View Controller 出现后几秒才被保存,因此在下一个 View Controller viewdidload 中查询该对象不会返回任何结果。

我也试过 dispatch_async 保存,但是没有成功。不确定这是与解析相关的问题还是 iOS,但任何建议都会有所帮助。

解决方案是在目标 View Controller 中返回结果之前向查询添加重试,但我想要一个更好的解决方案。

最佳答案

您的代码缺少 },因此我不确定 performSegue 实际放置在哪里。它应该放置在回调中 - 您甚至可能希望在成功情况下移动它,以便能够执行一些错误处理或重新发送或中的任何操作失败案例:

@IBAction func savedata(sender: AnyObject) {
    ...
    parseObj.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
        if success {
            println("Object Saved")
            self.performSegueWithIdentifier("segueX", sender: self)
        } else {
            println("Error")
            // retry !? do something appropriate
        }
    }
}

关于ios - 仅在通过解析保存数据后执行/触发 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696924/

相关文章:

android - 如何为 Gson Expose 注释添加支持字段

ios - 拍照时如何改变 UIImagePickerController 中按钮的颜色?

iphone - 使用 xCode 4.2 在 Interface Builder 中删除自动布局(约束)

ios - 碰撞类型源错误 - spritekit swift 游戏

ios - Firebase 按值观察从缓存数据中获取旧值

javascript - 如何在云中复制 Parse 对象?

ios - 如何使用 AFNetworking 发送 XML POST 请求

iOS 自定义键盘短高度

ios - 使用 Almofireimage 下载然后缓存单元格图像

ios - 我如何使用解析保存的数据来计算关注者的数量,如下所示: