2016-12-23 6 views
0

iPhoneアプリでユーザーの場所を取得しようとしています。 info.plistに必要な権限が指定されています(アプリがオフラインでない場合でも場所を使用します)。しかし、まだ私は、私の代議員が私が現在の位置さえも得られないということを少なくとも一度は引き起こされているのを見ない。コードは次のとおりです。ユーザーの所在地と更新を取得

import UIKit 
import CoreLocation 
class ViewController: UIViewController, CLLocationManagerDelegate { 

var locationManager = CLLocationManager(); 
override func viewDidLoad() { 


    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    locationManager.delegate = self 

    if (CLLocationManager.authorizationStatus() == CLAuthorizationStatus.notDetermined) { 
     self.locationManager.requestAlwaysAuthorization(); 
    } 

    locationManager.distanceFilter = kCLDistanceFilterNone 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.startUpdatingLocation() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let userLocation:CLLocation = locations[0] 
    let long = userLocation.coordinate.longitude; 
    let lat = userLocation.coordinate.latitude; 


    print(lat) 
} 

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) 
{ 
    locationManager.stopUpdatingLocation() 
    if ((error) != nil) 
    { 
     print(error) 
    } 
} 

誰かが問題を指摘できますか?

+0

場所の許可を求めるかどうかを確認しますか? – iMHitesh

+0

はい、それは一度許可を求められました。次のプログラムを実行するたびに、設定に格納されているため、このアクセス許可の要求は得られません。場所の更新でトリガーされるべきデリゲートは実際には呼び出されないということです。私はこれがマルチスレッドの問題かもしれないと思う。メインスレッドから呼び出され、そのインスタンスが存在しない他のスレッドで呼び出されています...今すぐチェック... – seeker

+0

[CLLocationManagerを迅速に取得する方法]の複製がありますか?(http://stackoverflow.com/questions/24252645/)どのように取得するか、場所を取得するユーザー、whith-cllocationmanager-in-swift) – xoudini

答えて

0

locationManager.stopUpdatingLocation()locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)で削除してください。それは動作するはずです。

関連する問題