从parse.com检索对象并等待返回,直到检索到数据为止



如何等待从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!)
        }
    }
}

最新更新