我理解完成处理程序的工作原理,但我对语法有点困惑。下面是一个函数,给定用户名,调用解析查询以找出相应的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的简短版本。
答案 0 :(得分:2)
以下是如何实现它:
func getUserIdFromUsername(username: String, completionHandler: String -> Void) {
let query = PFQuery(className: "_User")
query.whereKey("username", equalTo: username)
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if let objects = objects {
for object in objects {
completionHandler(object.objectId!)
}
}
}
}
以下是如何使用它:
getUserIdFromUsername("myUser") { id in
doSomethingWithId(id)
}