У меня есть класс, который расширяет PFQueryTableViewController. В этого класса реализация queryForTable(), я пытаюсь добавить некоторые данные для построения запроса, используя findObjectsInBackgroundWithBlock
. Проблема в том, что, поскольку findObjectsInBackgroundWithBlock
является асинхронным, как мне использовать данные, которые я получаю от findObjectsInBackgroundWithBlock
, и использовать их для построения query
ниже и выполнения return query
.
Мой код и ошибка показаны ниже.
override func queryForTable() -> PFQuery {
let query = PFUser.query()
//let query = PFQuery(className: "Room")
query?.whereKey("objectId", notEqualTo: PFUser.currentUser()!.objectId!)
//Showing OnlineUsers only
let onlineUsersQuery = PFQuery(className: "OnlineUsers")
onlineUsersQuery.whereKey("user", equalTo: PFUser.currentUser()!)
onlineUsersQuery.findObjectsInBackgroundWithBlock({ (results:[AnyObject]?, error:NSError?) -> Void in
let usersOnlineNow = results as! [PFObject]
for user in usersOnlineNow {
self.mLog.printToLog("Select only users who are in the OnLineUsers column")
query?.whereKey("objectId", equalTo: PFUser.currentUser()!.objectId!)
//query?.whereKey("objectId", equalTo: "noone")
if self.searchInProgress {
query!.whereKey("username", containsString: self.searchString)
}
if self.objects!.count == 0 {
//https://groups.google.com/forum/#!topic/parse-developers/7O9YCHNbuEo
query!.cachePolicy = PFCachePolicy.CacheThenNetwork //kPFCachePolicyCacheThenNetwork
//query.cachePolicy = kPFCachePolicyCacheThenNetwork
}
query!.orderByAscending("username")
return query!
}
})
// query!.orderByAscending("username")
//
// return query!
}