Получение ошибки при доступе к внутреннему перечислению из общедоступного перечисления в swift 4.2 - PullRequest
0 голосов
/ 10 октября 2018

Я получаю сообщение об ошибке при доступе к внутренним значениям перечисления внутри public enum

Фрагмент кода

@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 голосов
/ 10 октября 2018

Вы можете преобразовать upgradeStatus в статический метод, это сделает ваш код скомпилированным:

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