从Firebase Swift中检索双号的问题

问题描述:

我目前正在从餐馆的项目中按下餐馆视图控制器上的按钮,我正在查看谷歌地图(地图视图控制器)上餐厅的位置。为了在我的地图代码中放置经纬度,我在从Firebase中检索双数时遇到了问题。每当我尝试打印出来,我得到这个错误“致命错误:意外发现零而展开的可选值(LLDB)”从Firebase Swift中检索双号的问题

GMSServices.provideAPIKey("AIzaSyRQKeLyKH5CsrDPpPsjy7nYqudEbqXmQS2") 
     let ref = Database.database().reference().child("amsterdam") 
     ref.queryOrdered(byChild: "name").queryEqual(toValue: self.appDelegate.selectedBarName).observe(.value) { (snapshot) in 
      for child in snapshot.children{ 
       let snap = child as! DataSnapshot 
       let mapSnap = snap.childSnapshot(forPath: "map") 
       if let snapDict = mapSnap.value as? [String:AnyObject]{ 
        let dictValues = [AnyObject](snapDict.values) 
        for each in dictValues{ 
         let latitude = each["map_latitude"] as! Double 
         let longitude = each["map_longitude"] as! Double 

         print(latitude) 
         print(longitude) 
         let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 6.0) 
         let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
         self.view = mapView 
         let marker = GMSMarker() 
         marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude) 
         marker.map = mapView 
        } 
      } 
     } 
    } 
} 

我认为这个问题是摆脱每个值。 尝试这一行,以获取每个作为字典对象的值。

let latitude = each.object(forKey:"map_latitude") as! Double 
+0

遗憾的是它并没有真正的工作(我得到这个错误此消息:终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因是:“ - [__ NSCFNumber objectForKey:]:无法识别的选择发送到实例0x604000427420” – DNA

+0

请检查**每个**对象的值以及** dictValues **。如果您提供值** dictValues **,那么我将尝试提供解决方案 –

+0

我已检查过每个值和dictValues 。一切显示正确。可能问题是获取经度和纬度的单独值 – DNA