我有一个奇怪的问题,用户通过文本框输入一些数据并点击确定,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/