2017-11-04 12 views
0

私はプログラミングに慣れています。 locationManager関数から座標を取得してFirebaseに接続できるようにする方法を考えています。私はエラーを受け取り続けます:タイプ 'CLLocation!'メンバー '緯度'はありません。コアの場所データの抽出からFirebaseへのアップロード

locationManager関数の外でmyLocation変数の座標を取得する方法を理解しようとしています。

アドバイスは役に立ちます!

import UIKit 
import Firebase 
import CoreLocation 

class SignupViewController: UIViewController,CLLocationManagerDelegate { 


    let manager = CLLocationManager() 
    let currentUserLocation = CLLocation! 



    override func viewDidLoad() { 
     super.viewDidLoad() 

     let cloud = Storage.storage().reference(forURL: "gs://applesandoranges.appspot.com") 

     ref = Database.database().reference() 
     userStorage = cloud.child("users") 

     manager.delegate = self 
     manager.desiredAccuracy = kCLLocationAccuracyBest 
     manager.requestWhenInUseAuthorization() 
     manager.startUpdatingLocation() 



    } 


    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     let location = locations[0] 
     let myLocation = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude) 

}

}

答えて

0

私はあなたが現在のユーザーの場所のプロパティを宣言しようとしていたと思います。代わりに、この宣言を試してみてください:

var currentUserLocation: CLLocation? = nil 

は、その後、あなたのデリゲート関数内(ロケーションマネージャは更新をしました)、あなただけのプロパティを設定します。

currentUserLocation = locations[0] 

私はその場所の値を取得する方法のあなたの質問に答えると思います関数から外してビューコントローラの(そのプロパティに)変換します。

意味がありますか?

PS -

Xcodeのは、あなたの宣言でエラーを報告しなかったことを私は興味:Xcodeのの

let currentUserLocation = CLLocation! 

私のバージョンは、クラス名の後にメンバーの名前または初期化子を持つ上で主張しています。だから私はクラスそのもののためにCLLocation.selfとタイプするか、またはCLLocation(args)というインスタンスを構築する必要があります。これはあなたの奇妙なエラーメッセージの原因です。つまり、タイプとそのタイプのインスタンスを混同しています。

+0

ありがとうございました!私はCLLocationをCLLocationCoordinate2Dに変更して動作させる必要がありました。 –

関連する問題