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

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.请帮帮我.

推荐答案

在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
}

Ios相关问答推荐

如何使用UICollectionView Compositionallayout在UIKit中正确渲染远程图像

如何保持拖动预览与原始项目完全相同?

PieChartView未以编程方式显示在屏幕上

如何在SwiftUI中扩展双击的可检测区域?

在工作表上移动图像SwiftUI

如何在iOS中以编程方式推送另一个页面?

设置托管在DigitalOcean上的iOS通用链接

objc[25442]:Swift类的扩展和类别不允许有+load方法

视图未更新以在按下按钮时显示另一个视图

执行devicectl:ProcessException时出错:进程异常退出:错误:命令超时超过5.0秒

@Query与SwiftData数据列表绑定

Flutter iOS 构建失败:DVTCoreDeviceEnabledState_Disabled

核心媒体基础知识,了解 CMSampleBuffer、CMBlockBuffer 和 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer

弹出视图后使所有背景 UI 模糊

类型任何视图不能符合具有泛型的协议上的视图

如何将 iPhone OSStatus 代码转换为有用的东西?

每个版本的 iOS 都附带什么版本的移动 Safari?

水平滚动 UICollectionView 时对齐单元格的中心

如何在 Objective-C (iOS) 中的图像上写文本?

比较没有时间分量的 NSDates