作者:大男孩小男淫 | 来源:互联网 | 2022-12-07 12:27
这里我有一些Objective-C源代码:
MPushNotificationConfiguration *cOnfiguration= [[MPushNotificationConfiguration alloc] init];
configuration.types = MPushAuthorizationOptionsBadge | MPushAuthorizationOptionsSound | MPushAuthorizationOptionsAlert;
[MobPush setupNotification:configuration];
现在我想把它改成Swift,我尝试如下:
var cOnfiguration= MPushNotificationConfiguration()
configuration.types = .alert | .badge | .sound
MobPush.setupNotification(configuration)
但它写道:
如果没有更多的上下文,表达的类型是不明确的
我试过这样的:
var cOnfiguration= MPushNotificationConfiguration()
configuration.types = MPushAuthorizationOptions.alert | MPushAuthorizationOptions.badge | MPushAuthorizationOptions.sound
MobPush.setupNotification(configuration)
它写道:
无法将'MPushAuthorizationOptions'类型的值转换为预期的参数类型'UInt8'
我查了一些帮助文档,但没有任何帮助.我从Swift 3开始,然后是Swift 4,我对Objective-C了解一点.如何迅速表达如"|" 在Objective-C?
1> Sweeper..:
MPushAuthorizationOptions
这可能符合OptionSet
桥接到swift的时候,允许你指定多个选项.
在Objective-C中,您将OR所有值组合在一起.在Swift中,有一种特殊的语法.
根据文档OptionSet
,
使用选项集类型
当您需要创建选项集的实例时,请将类型的静态成员之一指定给您的变量或常量.或者,要创建具有多个成员的选项集实例,请为数组文字指定选项集的多个静态成员.要创建空实例,请为变量指定一个空数组文字.
所以你应该这样做:
configuration.types = [.alert, .badge, .sound]