热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从Objective-C到Swift4的一行代码

如何解决《从Objective-C到Swift4的一行代码》经验,为你挑选了1个好方法。

这里我有一些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]


推荐阅读
author-avatar
大男孩小男淫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有