CLLocation Manager in Swift to get Location of User
cllocationmanager, swift
Solution
You are missing two things. First, you have to ask for permission using `requestAlwaysAuthorization` or `requestWhenInUseAuthorization()`. So your `viewDidLoad()` should be like this:
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
Second, edit your `Info.plist` as indicated here.
Problem
I am trying to convert an old app in ObjC to Swift as a practice exercise and have ran in to some issues. The way I had it in the old app, it was establishing the CLLocation Manager and then I would use: ``` manager = [[CLLocationManager alloc]init]; manager.delegate = self; manager.desiredAccuracy = kCLLocationAccuracyBest; [manager startUpdatingLocation] ``` which would call automatically: ``` -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ } ``` and from there I could extract all the information I needed. But in swift, there is no autocompletion of this method and I cannot figure out how to reproduce it. The documentation says that ``` startUpdatingLocation() ``` will still be called by the delegate, but it isn't happening. This is what I have so far: ``` import UIKit import corelocation class ViewController: UIViewController,CLLocationManagerDelegate{ @IBOutlet var gpsResult : UILabel var manager:CLLocationManager! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. manager = CLLocationManager() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest manager.startUpdatingLocation() } func locationManager(manager:CLLocationManager, didUpdateLocations locations:AnyObject[]) { println("locations = \(locations)") gpsResult.text = "success" } } ``` Any help or pointers on where to look would be appreciated. Thanks. EDIT: Updated from Suggestions, but still not working EDIT2: Seems to be some bug not allowing the method to work properly in the ViewController