从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
遗憾的是它并没有真正的工作(我得到这个错误此消息:终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因是:“ - [__ NSCFNumber objectForKey:]:无法识别的选择发送到实例0x604000427420” – DNA
请检查**每个**对象的值以及** dictValues **。如果您提供值** dictValues **,那么我将尝试提供解决方案 –
我已检查过每个值和dictValues 。一切显示正确。可能问题是获取经度和纬度的单独值 – DNA