没有从查询Firebase数据库的函数中获得正确的返回

时间:2017-01-02 05:48:49

标签: ios swift function firebase firebase-realtime-database

我使用函数从Firebase返回一个值,我在一个名为DBProvider的类中执行此操作,最终,我尝试做的是从中检索值(纬度) Firebase并在函数(getUsersLatitude())中返回它。我试图做的是在函数中声明一个变量并将其设置为从Firebase检索的值(如下所示):

class DBProvider {

static let _instance = DBProvider()

//private init() {}

static var Instance: DBProvider {
    return _instance
}

var dbRef: FIRDatabaseReference {
    return FIRDatabase.database().reference()
}

let ref = FIRDatabase.database().reference()

func getUsersLatitude() -> CLLocationDegrees{
    var latitude = CLLocationDegrees()
    ref.child("users").child(FIRAuth.auth()!.currentUser!.uid).child("location").observeSingleEvent(of: .value, with: { (snapshot) in
        if let loc = snapshot.value as? [String : AnyObject]{
            if let lat = loc["latitude"]{
                latitude = lat as! CLLocationDegrees
                print("LATITUDE - \(latitude)")
            }
        }
    })
    ref.removeAllObservers()
    print("OUTSIDE LATITUDE - \(latitude)")
    return latitude
}

}

我在另一个名为PostViewController的类中调用此函数,如下所示:

override func viewDidLoad() {
    if FIRAuth.auth()?.currentUser != nil{
        DBProvider.Instance.getUsersLatitude()
    }
}

虽然我遇到的问题是它没有返回latitude,但它返回0.0。我知道这是因为印刷语句 - print("LATITUDE - \(latitude)"),这是ref .....里面的一个,带有正确的纬度,55.633348

然而,print("OUTSIDE LATITUDE - \(latitude)"),这是一个外部参考...,没有正确的纬度,0.0

如果过滤单词" LATITUDE"在调试器中,这是我得到的输出:

The image of my debugger output

非常感谢任何帮助,谢谢!

0 个答案:

没有答案