Быстрое наложение предварительного разрешения

В моей функции, где я получаю местоположение пользователя, я создал предварительные разрешения для предупреждения перед сообщением авторизации, чтобы не потерять 1 шанс получить необходимые разрешения от пользователя.

func getCurrentLocation() {
// Init LocationManager
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = 
kCLLocationAccuracyThreeKilometers;

let alert = UIAlertController(title: "Allow Loction Services?",
message: "This allows the app to your loction",
preferredStyle: .alert)

let ok = UIAlertAction(title: "Allow", style: .default, handler: { 
(action) -> Void in
self.showHUD("loading...")

if locationManager.responds(to: 
#selector(CLLocationManager.requestWhenInUseAuthorization)) {
locationManager.requestAlwaysAuthorization()
}}
self.hideHUD()
)
}



let cancel = UIAlertAction(title: "Not Now", style: .destructive, 
handler: { (action) -> Void in })

alert.addAction(ok); alert.addAction(cancel)
present(alert, animated: true, completion: nil)

locationManager.startUpdatingLocation()
}

В разделе:

let ok = UIAlertAction(title: "Allow", style: .default, handler: { (action) -> Void in self.showHUD("loading...")

Нас выскакивает сообщение: "Тип выражения неоднозначен без дополнительного контекста"

1 ответ

Компилятор Swift дает вам эту ошибку, потому что утверждение self.hideHUD() находится за скобками, которые отмечают блок обработчика завершения.

Я подозреваю, что вместо двух фигурных скобок в строке выше, вам нужна одна фигурная скобка, с другой, которая появится после того, как вы скроете HUD:

.......
        locationManager.requestAlwaysAuthorization()
    }
    self.hideHUD()
}
........
Другие вопросы по тегам