Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift和Parse findobjectsinbackgroundithblock不返回我的数组_Swift_Parse Platform - Fatal编程技术网

Swift和Parse findobjectsinbackgroundithblock不返回我的数组

Swift和Parse findobjectsinbackgroundithblock不返回我的数组,swift,parse-platform,Swift,Parse Platform,当编译器到达findObjectsInBackgroundWithBlock的末尾时,my CoordinateArray将丢失值,函数将返回空数组。你能帮忙吗? 先谢谢你 func getSquadMembersCoordinates() -> Array<PFGeoPoint> { var coordinatesArray:[PFGeoPoint] = [PFGeoPoint]() if user != nil { let us

当编译器到达findObjectsInBackgroundWithBlock的末尾时,my CoordinateArray将丢失值,函数将返回空数组。你能帮忙吗? 先谢谢你

 func getSquadMembersCoordinates() -> Array<PFGeoPoint> {
    var coordinatesArray:[PFGeoPoint] = [PFGeoPoint]()

    if user != nil {

            let userSquad = PFUser.currentUser()?["inSquad"] as? String

            let query = PFUser.query()
            query?.whereKey("username", notEqualTo: (PFUser.currentUser()?    ["username"])!)
            query?.whereKey("inSquad", equalTo: userSquad!)
            query?.whereKey("visible", notEqualTo: false)
            query?.findObjectsInBackgroundWithBlock {
                (results: [PFObject]?, error: NSError?) -> Void in
                if error == nil {
                    if results?.count != 0 {

                        if let results = results {
                            for object in results {
                                coordinatesArray.append(object.objectForKey("location") as! PFGeoPoint)

                            }
                        }
                    } else {
                        print("No Squad Members or not visible")
                    }
                } else {
                    print ("\(error)")
                }
            }
        } else {

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SquadVC")
                self.presentViewController(viewController, animated: true, completion: nil)
            })
    }



    print("\(coordinatesArray.count)")
    return coordinatesArray

}
func getSquadMembersCoordinates()->数组{
变量坐标阵列:[PFGeoPoint]=[PFGeoPoint]()
如果用户!=nil{
让userSquad=PFUser.currentUser()?[“inSquad”]作为?字符串
let query=PFUser.query()
查询?.whereKey(“用户名”,notEqualTo:(PFUser.currentUser()?[“用户名”])!)
查询?.whereKey(“inSquad”,equalTo:userSquad!)
查询?.whereKey(“可见”,notEqualTo:false)
查询?.findObjectsInBackgroundWithBlock{
(结果:[PFObject]?,错误:NSError?->Void in
如果错误==nil{
如果结果为?.count!=0{
如果让结果=结果{
对于结果中的对象{
CoordinateArray.append(object.objectForKey(“位置”)作为!PFGeoPoint)
}
}
}否则{
打印(“无团队成员或不可见”)
}
}否则{
打印(“\(错误)”)
}
}
}否则{
dispatch\u async(dispatch\u get\u main\u queue(),{()->Void in
让viewController:UIViewController=UIStoryboard(名称:“Main”,bundle:nil)
self.presentViewController(viewController,动画:true,完成:nil)
})
}
打印(\(CoordinateArray.count)“)
返回坐标阵列
}

在提取完成之前,您的代码到达返回行。您需要一些类似于通知的东西,以便在抓取完成后更新数据。

这是因为调用是异步的。你不能那样退。闭嘴。我的朋友,我对这个编程很在行!我该怎么做?您需要重新构造此方法的设计,以接受闭包作为参数,并以findObjectsInBackgroundWithBlock的结果作为参数调用该闭包。尝试本教程:助教的帮助…将学习更多的教程:)Tks所有的提示。我终于成功了:)