如何正确使用完成处理程序 [英] How to use completion handler correctly

查看:167
本文介绍了如何正确使用完成处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知完成处理程序是如何工作的,但即时通讯的语法有点迷茫。下面是一个函数,给定一个用户名,调用分析查询,找出相应的用户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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆