在Swift 4.2中从公共枚举访问内部枚举时出错

时间:2018-10-10 05:06:43

标签: swift enums xcode10 objective-c-swift-bridge

访问 public 枚举

中的内部枚举值时出现错误

代码段

@objc public enum Sample1 : Int {
      case valid
      fileprivate static var upgradeStatus:[String: Sample1] = [
          RawString.validValue.rawValue : .valid
      ]
}

internal enum RawString: String {
    case validValue = "Invalid"
}

错误提示

Enum 'RawString' is internal and cannot be referenced from a property initializer in a '@_fixed_layout' type

看起来是因为桥接了 @Objc ,但无法解决此问题。我无法删除 @Objc ,因为我的代码也在Objective C项目中使用。

任何人都可以帮助我解决此问题。

PS :在我更新为 Xcode 10

后,开始观察到此错误一次

1 个答案:

答案 0 :(得分:1)

您可以将upgradeStatus转换为静态方法,这将使您的代码得以编译:

fileprivate static func upgradeStatus() -> [String: Sample1] {
    return [
        RawString.validValue.rawValue : .valid
    ]
}