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)