Swift 2.0 – 二元运算符“|”不能应用于两个UIUserNotificationType操作数

我正在尝试以这种方式注册我的本地通知应用程序:

UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil)) 

在Xcode 7和Swift 2.0中 – 我得到错误Binary Operator "|" cannot be applied to two UIUserNotificationType operands Binary Operator "|" cannot be applied to two UIUserNotificationType operands 。 请帮帮我。

在Swift 2中,你通常会这样做的许多types已经被更新,以符合OptionSetType协议。 这允许像使用语法的数组,在你的情况下,你可以使用以下。

 let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil) UIApplication.sharedApplication().registerUserNotificationSettings(settings) 

在相关说明中,如果要检查选项集是否包含特定选项,则不再需要使用按位AND和零检查。 你可以直接询问选项集是否包含一个特定的值,就像你要检查一个数组是否包含一个值一样。

 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 } 

你可以写下面的内容:

 let settings = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge) 

对我有效的是

 //This worked var settings = UIUserNotificationSettings(forTypes: UIUserNotificationType([.Alert, .Badge, .Sound]), categories: nil) 

这已经在Swift 3中更新了。

  let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) UIApplication.shared.registerUserNotificationSettings(settings)