2016-12-23 4 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 в swift?] (http://stackoverflow.com/questions/24252645/ how-to-get-location-user-whith-cllocationmanager-in-swift) – xoudini

ответ

0

Попробуйте удалить locationManager.stopUpdatingLocation() в locationManager(manager: CLLocationManager!, didFailWithError error: NSError!). Он должен работать.