如何正确使用完成处理程序 [英] How to use completion handler correctly
本文介绍了如何正确使用完成处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
据我所知完成处理程序是如何工作的,但即时通讯的语法有点迷茫。下面是一个函数,给定一个用户名,调用分析查询,找出相应的用户ID。查询结束返回功能之后(所以它返回nil),这就是为什么我们需要完成处理。如何实现呢?
I understand how completion handlers work, but im a bit confused on the syntax. Below is a function that, given a username, calls a parse query to find out the corresponding userId. The query ends after the function is returned (so it returns nil), which is why we need the completion handler. How do i implement it?
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
}
请注意:我知道类似这样的例子存在,但他们要么不迅速,或极长。这是一个包含解析一个简短的版本。
NOTE: I know examples similar to this exist, but they are either not swift, or extremely lengthy. This is a short and concise version that contains Parse.
推荐答案
下面是如何实现它:
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)
}
这篇关于如何正确使用完成处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文