Ответ 1
В Swift 2 многие типы, для которых вы обычно делали это, были обновлены, чтобы соответствовать протоколу OptionSetType. Это позволяет использовать синтаксис массива для использования, и в вашем случае вы можете использовать следующее.
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
И в соответствующей заметке, если вы хотите проверить, содержит ли набор опций определенный параметр, вам больше не нужно использовать побитовое И и проверку нуля. Вы можете просто задать опцию, если она содержит определенное значение так же, как вы бы проверяли, содержит ли массив значение.
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
if settings.types.contains(.Alert) {
// stuff
}
В Swift 3 образцы должны быть записаны следующим образом:
let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
и
let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
if settings.types.contains(.alert) {
// stuff
}