[英]Swift returning a value in func before Parse can return a value
我试图弄清楚为什么swift会返回我在函数开头声明的0,而不是从Parse返回我将其设置为的数字。
func getPhotosSubmitted(quest: String) -> Int{
var num = 0
var query = PFQuery(className:"Quest")
query.whereKey("questName", equalTo:quest)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
// The find succeeded.
// NSLog("Successfully retrieved \(objects.count) scores.")
// Do something with the found objects
for object in objects {
num = (object["numOfSubmittedPhotos"] as Int)
println("---\(num)")
}
} else {
// Log details of the failure
//NSLog("Error: %@ %@", error, error.userInfo!)
}
}
return num
}
此函数每次都将返回0,就好像它没有在等待: num = (object["numOfSubmittedPhotos"] as Int)
当我尝试返回(object["numOfSubmittedPhotos"] as Int)
它抛出一个错误,指出Int是不能转换为void我打印测试行以查看从Parse中得到的值,它是不为0的正确值。有人在此代码中看到问题吗?
query.findObjects ...创建一个将有效运行的块。 之后,您将返回num。 现在发生了。
由于getNumberOfPhotos要返回一个仅在将来可用的值,因此它也必须是一个异步调用。 这意味着返回必须是将来要执行的某个块或类似的东西。
就像有人说的那样,花一天的时间在iOS中读取异步信息,专注于块而不是其他方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.