【问题标题】:Accessing Swift enum property from Objective-C从 Objective-C 访问 Swift 枚举属性
【发布时间】:2016-04-08 10:28:45
【问题描述】:

下面是我在 Swift 中声明 enum 的方式。我在一个类中有一个enum 类型的属性。但我无法从 Objective-C 访问此属性。有什么解决方法吗?我完全在 Swift 上编写了我的应用程序。我现在正在集成完全基于 Objective-C 的第三方 SDK。我需要 Objective-C 中这个 enum 属性的值。

 @objc public enum PaymentType: NSInteger {
    case COD
    case NB
    case CARDS
    case PAYTM
    case CITRUS
}
    var modeOfPayment: PaymentType?

当我试图在 Objective-C 中访问这个属性时,它说

找不到属性 modeOfPayment

NSLog(@"%d",[Helper sharedInstance].order.modeOfPayment);

【问题讨论】:

  • 可能问题是由选项引起的?在 objc 中,枚举不能是可选的。
  • 显示完整的属性声明;该代码片段不足以发现潜在问题。
  • 枚举应该是非可选的,因为它们的案例数量是不变的。您可以为 nil 等效项添加 NONE 案例。可选类型不暴露给 ObjC。
  • @Cy-4AH:你说得对。我设置了一个默认值,然后它就可以访问了: var modeOfPayment: PaymentType = PaymentType.COD;

标签: objective-c enums swift2


【解决方案1】:
@objc public enum PaymentType: Int {
    case none
    case COD
    case NB
    case CARDS
    case PAYTM
    case CITRUS
}
    var modeOfPayment: PaymentType = .none

确保您在 Swift 枚举中没有 case none 并将 .none 分配给属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2015-10-14
    • 1970-01-01
    相关资源
    最近更新 更多