我正在尝试编写一个连接到我的数据库以获取对象信息的函数,然后返回从另一个类调用的值(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
答案 0 :(得分:0)
这是GCD的重点,它是异步的。你希望有一些观察变量的东西来对块完成时的作用作出反应,而不是等待它。