如何等待从parse.com检索到数据?
这是我的函数,它返回一个空字符串,因为parse.com的响应太慢了。如果我在成功区域内放置一个断点,它将在需要数据后"很长一段时间"中断。我想有一种方法可以让数据同步,这样它就会等待吗?
func getObjectId(localPersonId:NSString) -> NSString{
var currentObjectId:NSString = ""
var query = PFQuery(className:"myClass")
query.whereKey("personId", equalTo:localPersonId)
query.whereKey("groupId", equalTo:self.currentGroupId)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
// should not use a for loop since this should
// only return one row
for object in objects {
currentObjectId = object["objectId"] as NSString
}
} else {
// Log details of the failure
NSLog("Error: %@ %@", error, error.userInfo!)
}
}
return currentObjectId
}
在这种情况下,getObjectId函数将返回一个空字符串。任何人
我意识到这已经有3个月的历史了,但尽管Parse文档非常好/有用,但并没有太多答案可以回答IOS Parse相关的问题。
这应该行得通。它使用了一个完成处理程序,这是处理这个问题的一种简单方法。
(有关异步上下文中的完成处理程序的更多信息:https://thatthinginswift.com/completion-handlers/)
func getObjectId(localPersonId:NSString, completionHandler: (currentObjectId: [String]) -> ()){
var currentObjectId:NSString = ""
var query = PFQuery(className:"myClass")
query.whereKey("personId", equalTo:localPersonId)
//query.whereKey("groupId", equalTo:self.currentGroupId)
query.findObjectsInBackgroundWithBlock {
(objects, error) -> Void in
if error == nil {
// should not use a for loop since this should
// only return one row
for object in objects {
completionHandler(currentObjectId: currentObjectId)
}
} else {
// Log details of the failure
NSLog("Error: %@ %@", error!, error!.userInfo!)
}
}
}