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的一个强制性部分,如果这是你的意思,我不能改变这一点。我不确定我是否正确理解了你的建议。否决票-我很想知道为什么这个问题会被否决,避免以后再问这样的问题。欢迎任何指导。