Swift 函数仅在数组';s获取循环已完成

Swift 函数仅在数组';s获取循环已完成,swift,asynchronous,parse-platform,Swift,Asynchronous,Parse Platform,以下函数返回PFObjects的数组。我遇到的问题是,当函数到达返回点时,对象中对象的循环尚未完成,因此函数返回的是空数组 是否有方法仅在循环完成并填充PF数组后返回 func getSelectedPosts() -> [PFObject] { println("RUN GET SH") var fetchResults = [PFObject]() var user = PFUser.currentUser()! var relation = us

以下函数返回
PFObjects
的数组。我遇到的问题是,当函数到达返回点时,对象中对象的
循环尚未完成,因此函数返回的是空数组

是否有方法仅在循环完成并填充PF数组后返回

func getSelectedPosts() -> [PFObject] {

    println("RUN GET SH")

    var fetchResults = [PFObject]()

    var user = PFUser.currentUser()!
    var relation = user.relationForKey("followingPosts")
    var query = relation.query()
    query?.findObjectsInBackgroundWithBlock({ (object: [AnyObject]?, error: NSError?) -> Void in
        if error == nil
        {
            for object in object!
            {
                fetchResults.append(object as! PFObject)
            }
            // NEED TO RETURN HERE, THAT IS WHEN THE LOOP IS DONE AND THE ARRAY POPULATED
        }
        else
        {
        // ERROR
        }
    })

    return fetchResults
 }

根据umakanta的建议和闭包的解释,我可以让它按照我对闭包的预期工作

功能

    func getSelectedPosts(result: (object: [PFObject]?, error: NSError? -> Void){   
        println("RUN GET SH")

        var fetchResults = [PFObject]()
        var err = NSError()

        var user = PFUser.currentUser()!
        var relation = user.relationForKey("followingPosts")
        var query = relation.query()
        query?.findObjectsInBackgroundWithBlock({ (object: [AnyObject]?, error: NSError?) -> Void in
            if error == nil
            {
                for object in object!
                {
                    fetchResults.append(object as! PFObject)
                }
                result(object: fetchResults, error: nil)
            }
            else
            {
                println("ERROR - getSelectedPosts \(error)")
                result(object: nil, error: error)
            }
        })
    }
函数调用

        getSelectedPosts { (object) -> Void in
            if error != nil
            {
               // deal with error
            }
            else
            {
               // use fetched object
            }
        }

如果函数需要一个参数来获取结果。请点击下面的链接


您的for in在关闭内,返回将与此关闭相对应。返回将不会在该关闭内被识别。此外,这个闭包是PFQuery的一个强制性部分,如果这是你的意思,我不能改变这一点。我不确定我是否正确理解了你的建议。否决票-我很想知道为什么这个问题会被否决,避免以后再问这样的问题。欢迎任何指导。