如何从 swift 代码中获得有用的 objc 枚举打印输出?

Posted

技术标签:

【中文标题】如何从 swift 代码中获得有用的 objc 枚举打印输出?【英文标题】:How could I get a useful printout of an objc enum from swift code? 【发布时间】:2014-06-06 10:09:33 【问题描述】:
    vp.verifyEmail(self.textClaim) (OYIDCVerificationStatus status)
        in
        println("verifying email \(self.textClaim) returned \(status)")
    

产生“验证电子邮件 foo@bar 返回(枚举值)” (这显然没有实际用途)。 这个:

    vp.verifyEmail(self.textClaim) (OYIDCVerificationStatus status)
        in
        var s : CShort = status as CShort //<- this does not compile
        println("verifying email \(self.textClaim) returned \(s)")
    

不编译

VerifyEmailViewController.swift:22:21: 'YOIDCVerificationStatus' 不能转换为 'CShort'

即使枚举是这样声明的:

typedef NS_ENUM(short, YOIDCVerificationStatus) 
    Unavailable = -1,
    ClaimRefuted,
    ClaimVerified
;

【问题讨论】:

【参考方案1】:

toRaw 会做你需要的吗?

 vp.verifyEmail(self.textClaim) (OYIDCVerificationStatus status)
        in
        println("verifying email \(self.textClaim) returned \(status.toRaw())")
    

【讨论】:

类似于 toRaw,是的。尝试执行 status.toRaw 会导致 VerifyEmailViewController.swift:22:12: 'status' is not a type

以上是关于如何从 swift 代码中获得有用的 objc 枚举打印输出?的主要内容,如果未能解决你的问题,请参考以下文章

从 Objc 超类继承的 Swift 子类中未调用 viewDidLoad

如何从lldb中的objc访问swift方便变量?

Xcode中如何快速创建一个Objc与Swift桥接的头文件

Objc 代码找不到 swift 中定义的 Bool 变量

objc 中 id<delegate>这个类型在swift中怎么写

为啥 Swift Int 零在 objc 代码中被读取为零?