【问题标题】:Obj-C to Swift Bridging issues: NS_ENUM -> enumObj-C 到 Swift 的桥接问题:NS_ENUM -> enum
【发布时间】:2015-08-21 04:50:17
【问题描述】:

我在 Swift 项目中使用了一个带有桥接的 Obj-C 库。除了具有自定义值的 NS_ENUM 之外,一切都可以:

Obj-C(原创)

typedef NS_ENUM(NSInteger, HTTPStatusCode) {
//    Informational 1xx
    HTTPStatusCodeContinue = 100,
    HTTPStatusCodeSwitchingProtocols = 101,
    HTTPStatusCodeProcessing = 102,
    HTTPStatusCodeCheckpoint = 103,
    ...

Swift(带桥接)

enum HTTPStatusCode : Int {

    //    Informational 1xx
    case Continue
    case SwitchingProtocols
    case Processing
    case Checkpoint
    ...

桥接的 NS_ENUM 实现如何正确转换为 Swift?

【问题讨论】:

  • 实际上 Swift 将在其桥接中生成的值是小写的 --- .continue .switchingProtocols .processing .checkpoint

标签: objective-c swift enums bridge


【解决方案1】:

我认为您在此处发布的是自动生成的 Swift 代码,这意味着它省略了实现细节。

好消息是它仍然以您期望的方式工作:

let x: HTTPStatusCode = .Continue
println("Continue = \(x.rawValue)") 

打印100

【讨论】:

  • 这很好——但是值的名称是什么——在 Swift 中有什么方法可以打印 x 的值——“继续”???我找不到这样做的方法 --- 大多数 Cocoa 和 Cocoa-Touch 都暴露了 NS_Enum 的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2016-08-11
  • 2014-07-31
相关资源
最近更新 更多