座標をDouble型としてRealtime Databaseからの読み込みができません。(読み込んだ値がコンソールでnilと表示されます)エラーもありません。どこが間違っているか教えて下さい。
viewcontroller
1class FirstViewController: UIViewController, CLLocationManagerDelegate { 2 3 @IBOutlet weak var mapView: MKMapView! 4 @IBOutlet weak var latitude: UILabel! 5 @IBOutlet weak var longitude: UILabel! 6 let user = Auth.auth().currentUser?.uid 7 let locationManager = CLLocationManager() 8 var ref: DatabaseReference! 9 var otherUserLatitude: Double? = nil 10 var otherUserLongitude: Double? = nil 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 ref = Database.database().reference() 15 locationManager.delegate = self as! CLLocationManagerDelegate 16 } 17 //上手くいっている 18 @IBAction func userLocation(_ sender: Any) 19 { 20 let refLatitude = ref.child("userLatitude") 21 refLatitude.setValue(latitude.text) 22 let refLongitude = ref.child("userLongitude") 23 refLongitude.setValue(longitude.text) 24 print("位置情報を保存しました") 25 } 26 //DBから取得できていない 27 @IBAction func othersLocation(_ sender: Any) 28 { 29 ref.child("userLatitude").observeSingleEvent(of: .value, with: { (snapshot) in 30 let value = snapshot.value as? NSDictionary 31 let otherUserLatitude = value?["userLatitude"] as? Double 32 //コンソール表示otherUserLatitude: nil 33 print("otherUserLatitude:", otherUserLatitude) 34 }) 35 ref.child("userLongitude").observeSingleEvent(of: .value, with: { (snapshot) in 36 let value = snapshot.value as? NSDictionary 37 let otherUserLongitude = value?["userLongitude"] as? Double 38 //コンソール表示otherUserLongitude: nil 39 print("otherUserLongitude:", otherUserLongitude) 40 }) 41 } 42 func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { 43 switch status { 44 case .notDetermined: 45 locationManager.requestWhenInUseAuthorization() 46 case .authorizedWhenInUse: 47 locationManager.startUpdatingLocation() 48 default: 49 break 50 } 51 } 52 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 53 if let coordinate = locations.last?.coordinate { 54 // 現在地を拡大して表示する 55 let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01) 56 let region = MKCoordinateRegion(center: coordinate, span: span) 57 mapView.region = region 58 } 59 guard let newLocation = locations.last else { 60 return 61 } 62 self.latitude.text = "".appendingFormat("%.4f", newLocation.coordinate.latitude) 63 self.longitude.text = "".appendingFormat("%.4f", newLocation.coordinate.longitude) 64 let location = locations.first 65 let latitude = location?.coordinate.latitude 66 let longitude = location?.coordinate.longitude 67 68 print("latitude: (latitude!)\nlongitude: (longitude!)") 69 } 70 71 72} 73 74
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/26 02:58