2016-12-23 1 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

[가능한 빨리 위치 사용자 whith CLLocationManager를 얻는 방법?] (http://stackoverflow.com/questions/24252645/)의 가능한 복제본 how-to-get-location-user-whith-cllocationmanager-in-swift) – xoudini

답변

0

locationManager.stopUpdatingLocation()locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)에서 삭제하려고하십시오. 그것은 작동해야합니다.