【发布时间】:2016-02-02 11:43:05
【问题描述】:
我了解完成处理程序的工作原理,但我对语法有点困惑。下面是一个函数,给定一个用户名,调用一个解析查询来找出相应的 userId。查询在函数返回后结束(所以它返回 nil),这就是我们需要完成处理程序的原因。如何实现?
func getUserIdFromUsername(username: String) -> String {
var returnValue = String()
let query = PFQuery(className: "_User")
query.whereKey("username", equalTo: username)
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if let objects = objects {
for object in objects {
returnValue = object.objectId!
}
}
}
return returnValue
}
注意:我知道存在类似的示例,但它们要么不快速,要么非常冗长。这是一个包含 Parse 的简短版本。
【问题讨论】:
-
看起来可能的重复是关于 JavaScript 中的异步操作,而不是 Swift。
-
几乎有数百个这样的问题 - 几乎所有问题都与语言无关。上面提到的有一个很好的解释异步和同步的含义,无论如何都值得一读。 JavaScript 使用 Promise,Swift 也将其作为第三方库。
标签: ios swift asynchronous parse-platform completionhandler