2016-08-12 19 views
2

私はFirebaseから取得している文字列を変換し、Google Mapsでいくつかの注釈として追加しようとしています。ここで文字列をCLLocationDegrees Swift 2に変換する方法

ref = FIRDatabase.database().reference() 
    ref.child("Locations").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
     let lat = (snapshot.value!["Latitude"] as! NSString).doubleValue 
     let lon = (snapshot.value!["Longitude"] as! NSString).doubleValue 



     let complainLoc = CLLocationCoordinate2DMake(lat, lon) 

     let Coordinates = CLLocationCoordinate2D(latitude: lat, longitude: lon) 

    }) 

My JSON Tree

My Code Block Which Crashes

FIRDatabase.database().reference().child("Location").child(FIRAuth.auth()!.currentUser!.uid).setValue(["Latitude": locationManager.location!.coordinate.latitude, "Longitude": locationManager.location!.coordinate.longitude]) 
+0

は、あなたはそれはあなたが強制的にキャスティングは/アンラップことをやっているところ 'CLLocationCoordinate2D'を作成し、いないところ、それがクラッシュしていますか? 'value'が' nil'でないことを確認してください。 'value [" Latitude "]'と 'value [" Longitude "]'は両方とも(a) 'nil 'ではなく、(b)文字列の値であることも確認してください。これらすべての '! 'はアンラッピングを強制して強制的にキャスト演算子を強制するので、ここでは多くのクラッシュの原因が考えられます。 – Rob

+0

'complainLoc'とは何ですか? – vadian

答えて

2

メイクをFirebaseするために、私は、データを保存するために使用されるコードをされています。それは、現在のコードを通過するたびUnfortuanately、私のアプリがクラッシュしますあなたのデータベースにlatlonの値を保存するときは、必ず は使用を取得するために... floatまたはdoubleとしてそれらをAVING:

ref = FIRDatabase.database().reference() 
    ref.child("Locations").observeEventType(.Value, withBlock: { (snapshot) in 

    if snapshot.exists(){  

    if let locationDictionary = snapshot.value as [String : AnyObject]{ 

     for each in locationDictionary{   

    //each will bring you every location dictionary in your database for your every user 
      let lat = each.value!["Latitude"] as! CLLocationDegrees 
      let lon = each.value!["Longitude"] as! CLLocationDegrees 
      let userId = each.key as! String 

      let complainLoc = CLLocationCoordinate2DMake(lat, lon) 

      let Coordinates = CLLocationCoordinate2D(latitude: lat, longitude: lon) 
     //Every time this for loop complete's itself it will generate a new set of Coordinates for each user 
     } 
     } 
    } 
}) 
+0

let変数latとlonを作成してもアプリがクラッシュする可能性があります。 Firebaseにデータを保存したのと同じ方法で、LatitudeとLngitudeに正しく入力しました。 –

+0

私の投稿を更新しました –

+0

このコードは機能しますが、別のすべてのuid(ユーザー)からすべての場所を取得したいのですが、現在のユーザーのuidの子を削除するとクラッシュします –

関連する問題