Я использую mapkit для создания приложения, в то время как я пытаюсь получить местоположение пользователя из firebase, оно вызывает ошибку в этих трех строках
let dict = recipeSnap.value as! [String:Double?]
let latitude = dict["latitude"] as? Double?
let longitude = dict["longitude"] as? Double?.
Я пытался заменить double на строку, нопроизошла новая ошибка, затем я попытался заменить ее на AnyObject, она работает, но данные похожи на Optional (37.785834). и это всегда вызывает ошибку, пока я использую данные AnyObject для других целей.
вот мой код
@objc func updateTimer(){
print("Update location")
let location = locman.location!.coordinate
lat = String(location.latitude)
long = String(location.longitude)
print(lat)
print(long)
let ref = Database.database().reference()
ref.child("location/User1/longitude").setValue(long)
ref.child("location/User1/latitude").setValue(lat)
ref.child("location").observeSingleEvent(of: .value) { (snapshot) in
self.usern = snapshot.childrenCount
for snap in snapshot.children{
let aSnap = snap as! DataSnapshot
let dict = aSnap.value as! [String:Double?]
let latitude = dict["latitude"] as? Double?
let longitude = dict["longitude"] as? Double?
print(dict)
print(latitude)
print(longitude)
let point = MKPointAnnotation()
point.title = "user"
//point.coordinate = CLLocationCoordinate2D(latitude: CLLocationDegrees(latitude), longitude: CLLocationDegrees(longitude))
self.mapView.addAnnotation(point)
}
}
}
и вот моя ошибка
МожетНе приведите значение типа «Swift._NSContiguousString» (0x1032681f8) к «NSNumber» (0x1b7a1abf0). 2019-10-10 20:24:05. mapkitMap [1468: 709956] Не удалось привести значение типа «Swift._NSContiguousString» (0x1032681f8) к «NSNumber» (0x1b7a1abf0). Необязательно (37.785834)
, пока я пытаюсь заменить Double на строку, появляется новая ошибка
Не удалось преобразовать значение типа '__NSCFNumber' (0x1b7a0e0e0) в 'NSString'(0x1b7a1aad8). 2019-10-10 20: 20: 32.1 mapkitMap [1465: 708355] Не удалось преобразовать значение типа '__NSCFNumber' (0x1b7a0e0e0) в 'NSString' (0x1b7a1aad8).