如何从Objective-C访问Swift中的枚举?

用户3800029

在Objective-C中定义了一个全局枚举:

typedef enum {
     UMSocialSnsTypeNone = 0,
     UMSocialSnsTypeQzone = 10,
     UMSocialSnsTypeSina = 11,                 //sina weibo
} UMSocialSnsType;

这段代码设置平台的共享类型:

snsPlatform.shareToType = UMSocialSnsTypeDouban;

在Swift中,我想获取平台的共享类型:

var snstype = snsPlatform!.shareToType
println(snstype)

结果: UMSocialSnsType (has 1 child)

snstype.toRaw()

错误: UMSocialSnsType does not have a member named "toRaw"

内特·库克(Nate Cook)

据我所知,它UMSocialSNSType是在Objective-C中声明的,没有使用NS_ENUM宏,因此它没有作为Swift导入enum这意味着不能使用.toRaw()或者UMSocialSNSType.Douban必须使用不同的枚举值作为常量结构。不幸的是,该类型也没有设置适当的运算符(==~=),因此您必须比较该value属性。

var snstype = snsPlatform!.shareToType

switch snstype.value {
case UMSocialSnsTypeDouban.value:
    println("douban")
case UMSocialSnsTypeEmail.value:
    println("email")
default:
    println("other")
}

if snstype.value == UMSocialSnsTypeDouban.value {
    println("douban")
}

好消息是,它看起来像Xcode中的所有常量都是自动完成的,因此您应该能够找到需要这样做的比较。


看起来桥接的Swift版本typedef...enum必须是这样的:

struct UMSocialSnsType {
    var value:Int
    init(_ val:Int) {
        value = val
    }
}
let UMSocialSnsTypeNone  = UMSocialSnsType(0)
let UMSocialSnsTypeQzone = UMSocialSnsType(10)
let UMSocialSnsTypeSina  = UMSocialSnsType(11)
// etc

而如果它是在Objective-C中使用NS_ENUM宏声明的,则它看起来像:

enum UMSocialSnsType: Int {
    case UMSocialSnsTypeNone = 0
    case UMSocialSnsTypeQzone = 10, UMSocialSnsTypeSina // etc.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift中的Objective-C枚举

来自分类Dev

如何在Swift中从Objective-C访问NSMutableArray

来自分类Dev

如何在Objective-C标头中引用Swift枚举

来自分类Dev

如何在Swift中使用Objective-C枚举

来自分类Dev

如何将此枚举从Objective-C转换为Swift?

来自分类Dev

Swift中Objective-C typedef枚举的相等性

来自分类Dev

Swift 或 Objective C 中枚举器和迭代器的区别

来自分类Dev

如何从Swift语言访问Objective-C类方法

来自分类Dev

如何从Swift类访问Objective-C NSMutableDictionary?

来自分类Dev

如何在C程序的结构中访问定义的枚举

来自分类Dev

如何访问枚举中的变量?

来自分类Dev

如何从QML访问C ++枚举?

来自分类Dev

如何从QML访问C ++枚举?

来自分类Dev

如何正确同步对Objective-C中的实例变量的访问

来自分类Dev

以Swift枚举作为参数的Swift方法在Objective C中不可见

来自分类Dev

Swift:在Swift中使用Objective-C中声明的枚举时遇到问题

来自分类Dev

针对Objective-C枚举的新Swift 5警告:如何消除它们?

来自分类Dev

如何在Swift中处理C枚举回调函数

来自分类Dev

如何在Swift中的其他类中访问枚举值?

来自分类Dev

在Swift应用程序中访问Objective-C sharedInstance

来自分类Dev

在Swift中访问Objective-C的NS_ENUM

来自分类Dev

Swift-在Objective-C类中访问NSArray

来自分类Dev

从Objective-C文件中的AppDelegate.swift访问UIWindow

来自分类Dev

从Swift中的Objective C项目访问App委托

来自分类Dev

无法从Objective-C文件访问Swift类中的变量

来自分类Dev

无法在 Objective-C 中访问 Swift 框架

来自分类Dev

如何在Objective-C中创建Swift对象?

来自分类Dev

如何在Swift / Objective C中从HTTP请求返回数据

来自分类常见问题

如何使用Swift中的Objective-C #define

Related 相关文章

热门标签

归档