[英]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.