2017-05-24 15 views
0

私は起動時にすぐにユーザーの場所を取得しようとしており、これを実行するには、AppDelegateの関数で更新されるグローバル変数userLocationを実装しました。AppDelegate Extensionが呼び出されない

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    var locationManager = CLLocationManager() 
    locationManager.delegate = self 
    locationManager.requestWhenInUseAuthorization() 
    if CLLocationManager.locationServicesEnabled(){ 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.requestLocation() 
    } 
    return true 
} 

と拡張子::

extension AppDelegate: CLLocationManagerDelegate { 
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     usersLocation = locations.last! 
    } 
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { 
     print(error) 
    } 
} 

userLocationが更新されることは決してありません、と私はuserLocation = locations.last!行にブレークポイントを配置し、それはそれに到達したことがない私はそうのようなロケーションマネージャを実装しています。何かアドバイス

答えて

1

ため

おかげで私はあなたがあまりにもlocationManager変数を維持するべきだと思います。

var locationManager: CLLocationManager! 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    locationManager = CLLocationManager() 
    locationManager.delegate = self 
    locationManager.requestWhenInUseAuthorization() 
    if CLLocationManager.locationServicesEnabled(){ 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.requestLocation() 
    } 
    return true 
} 
+0

ありがとうございますが、私のニーズにはまだ十分に速くは動作しませんでした。おそらく、ユーザーインタラクションの前にローディングアニメーションを追加するだけです –

関連する問題