GCD具有函数返回值

时间:2015-05-20 19:20:11

标签: ios xcode swift asynchronous grand-central-dispatch

我正在尝试编写一个连接到我的数据库以获取对象信息的函数,然后返回从另一个类调用的值(UserObject)。以下是我的代码。我的问题是函数在完成块完成之前返回u。我正在使用Theo连接到我的NEO4j数据库。

func getUserObjectFromDB(userID: NSString)->UserObject
{
    let cyperQuery: String = "CYPHER QUERY from userID"
    let cyperParams: Dictionary<String, AnyObject> = ["user" : "UserObject"]
    let u=UserObject();

    let fetchDispatchGroup: dispatch_group_t = dispatch_group_create()
    dispatch_group_enter(fetchDispatchGroup)

    theo.executeCypher(cyperQuery, params: cyperParams, completionBlock: {(cypher, error) in
        println("response from cypher \(cypher)")
        //PARSE THE RESPONSE FROM SERVER TO GET USER OBJECT
        dispatch_group_leave(fetchDispatchGroup)
     })

    //Called After the dispatch group leaves
    dispatch_group_notify(fetchDispatchGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

    })
   return u

1 个答案:

答案 0 :(得分:0)

这是GCD的重点,它是异步的。你希望有一些观察变量的东西来对块完成时的作用作出反应,而不是等待它。

相关问题