Я думаю, почему широта равна нулю при вызове print (loccationService.latitude) в том, что метод делегата
func locationManager (_ manager: CLLocationManager, didUpdateLocations location: [CLLocation])
еще не обновил широту.
Вы можете добавить один обратный вызов в CoreLocationService, как показано ниже,
// callback to be called after updating location
var didUpdatedLocation: (() -> ())?
, а затем вызвать это замыкание в методе делегата,
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let GPS = locations[locations.count - 1] // Get the array of last location
latitude = GPS.coordinate.latitude
didUpdatedLocation?()
}
В вашем ViewController выведите следующую широту:
locationService.didUpdatedLocation = {
print(locationService.latitude) // Print Latitude
}
Надеюсь, это поможет!