[英]parse.com - Get Object delay in iOS
我想得到一个对象并打印出来。 所以我创建了一个函数来处理获取对象并将其返回。
问题是,对象打印得太早。
这是我的功能:
func getParseObject(){
println("i'm inside the function")
var query = PFQuery(className: "testClass")
query.getObjectInBackgroundWithId("OWXnWkL") {(tempObject: PFObject?, error: NSError?) -> Void in
if error == nil && tempObject != nil {
println("object retrieved with success")
} else {
//error
}
}
return object
}
这就是电话:
var data = getParseObject()
println("data is: \(data)")
这是控制台的输出:
我在功能里面
数据是:
对象成功检索
处理这个问题的最佳解决方案是什么?
非常感谢!
你的问题是你在做异步请求,请求是在后台执行的。 因此,您在恢复服务器上的数据之前返回对象。
如果要显示需要同步的函数返回的值:
func getParseObject() -> PFObject {
var object : PFObject?
let query = PFQuery(className: "testClass")
let result = query.getObjectWithId("OWXnWkL")
if result != nil {
object = result
}
return object!
}
否则你必须与处理程序一起工作:
var query = PFQuery(className: "testClass")
query.getObjectInBackgroundWithId("OWXnWkL") {(tempObject: PFObject?, error: NSError?) -> Void in
if error == nil && tempObject != nil {
println("object retrieved with success")
// Do something with the object!
} else {
//error
}
我希望我能帮到你
Ysee}
您需要在异步请求的回调中返回您的对象值,如下所示:
func getParseObject(){
println("i'm inside the function")
var query = PFQuery(className: "testClass")
query.getObjectInBackgroundWithId("OWXnWkL") {(tempObject: PFObject?, error: NSError?) -> Void in
if error == nil && tempObject != nil {
println("object retrieved with success")
} else {
//error
}
return object // <-- Return your value here
} // <-- Asynchronous request ends here
}
来自getObjectInBackgroundWithId方法的闭包中的代码是异步的,需要更多时间才能完成。 所以在闭包结束后编写的代码将首先运行。
func getParseObject(){
println("i'm inside the function")
var query = PFQuery(className: "testClass")
query.getObjectInBackgroundWithId("OWXnWkL") {(tempObject: PFObject?, error: NSError?) -> Void in
if error == nil && tempObject != nil {
println("object retrieved with success")
//THIS RUNS SECOND::::::::
} else {
//error
}
}
return object
}
var data = getParseObject()
println("data is: \(data)") //:::::THIS RUNS FIRST::::::
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.