当前位置: 首页 > 知识库问答 >
问题:

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

谯嘉懿
2023-03-14

我正在尝试通过以下方式注册我的本地通知应用程序

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

在Xcode 7和Swift 2.0中,I get error二进制运算符“|”不能应用于两个UIUserNotificationType操作数。请帮帮我。


共有3个答案

祁景山
2023-03-14

对我有用的是

//This worked
var settings = UIUserNotificationSettings(forTypes: UIUserNotificationType([.Alert, .Badge, .Sound]), categories: nil)
何承
2023-03-14

您可以编写以下内容:

let settings = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge)
凌成天
2023-03-14

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

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

与此相关的是,如果您想检查选项集是否包含特定选项,您不再需要使用按位与和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
}
 类似资料: