Здравствуйте, у меня есть некоторый код switch
case
, который обрабатывает UNAuthorizationStatus, так как с iOS12 был добавлен новый статус: .provisional
. В C или другом старом стиле компилятора я бы написал директиву прекомпилятора для окружения кода обработки .provisional, однако в swift, что, похоже, приводит к ошибкам.
private func checkNotificationSettings() {
UNUserNotificationCenter.current().getNotificationSettings { settings in
switch settings.authorizationStatus {
if #available(iOS 12.0, *) { // ERROR here
case .provisional: // ERROR here too
// Do my thing
}
case .authorized:
// Do my thing
case .notDetermined:
// Request authorization and if granted do my thing
case .denied:
// Do not do my thing
}
}
}
Ошибки:
Переключатель должен быть исчерпывающим
Все операторы внутри переключателя должны быть заключены в «case» или «default»
Есть ли какой-нибудь умный способ справиться с этим? Я хотел бы избежать этого, потому что это слишком долго и повторяется:
if #available(iOS 12.0, *) {
NUserNotificationCenter.current().getNotificationSettings { settings in
switch settings.authorizationStatus {
case .provisional:
...
}
} else {
NUserNotificationCenter.current().getNotificationSettings { settings in
switch settings.authorizationStatus {
...
}
}