在 Swift 2 中,您通常会为其执行此操作的许多类型都已更新为符合 OptionSetType 协议。这允许使用类似数组的语法,在您的情况下,您可以使用以下内容。
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
并且在相关说明中,如果要检查选项集是否包含特定选项,则不再需要使用按位 AND 和 nil 检查。您可以简单地询问选项集是否包含特定值,就像检查数组是否包含值一样。
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
}