I want to get the current location, but instead I get an error.
This is a snippet of my view controller.
- (void)viewDidLoad {
self.locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray<CLLocation *> *)locations {
// I would get the latest location here
// but this method never gets called
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error {
NSLog(@"didFailWithError: %@", error);
}
I'm expecting the delegate method locationManager:didUpdateLocations:
to get called, but instead, only locationManager:didFailWithError:
gets called, and prints this:
didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
Issues like this can be resolved by setting location as "
Apple
". At least it works for testing purpose.A restart of the simulator didn't work for me.
If you are using the simulator:
command + shift + ,
in Xcode to open the scheme editorAllow Location Simulation
Selecting
None
as your Default Location may have caused the problem.Go to home in simulator
home ->Settings ->Privacy ->Locations -> select the app and choose always
If you are using a
custom location
make sure you have the long and lat the correct way, i had it reversed and wasted 3 hours before i realised...