我有这个枚举String
值,它将用于告诉记录到服务器的 API 方法消息具有哪种类型的服务器。我使用的是 Swift 1.2,因此枚举可以映射到 Objective-C
@objc enum LogSeverity : String {
case Debug = "DEBUG"
case Info = "INFO"
case Warn = "WARN"
case Error = "ERROR"
}
我收到错误
@objc enum raw type String 不是整数类型
我还没有找到任何地方说只有整数可以从 Swift 转换为 Objective-C。是这样吗?如果是这样,有人对如何在 Objective-C 中提供类似的功能有任何最佳实践建议吗?
解决方案之一是使用RawRepresentable
协议。
必须编写 init 和 rawValue 方法并不理想,但这允许您在 Swift 和 Objective-C 中像往常一样使用此枚举。
@objc public enum LogSeverity: Int, RawRepresentable {
case debug
case info
case warn
case error
public typealias RawValue = String
public var rawValue: RawValue {
switch self {
case .debug:
return "DEBUG"
case .info:
return "INFO"
case .warn:
return "WARN"
case .error:
return "ERROR"
}
}
public init?(rawValue: RawValue) {
switch rawValue {
case "DEBUG":
self = .debug
case "INFO":
self = .info
case "WARN":
self = .warn
case "ERROR":
self = .error
default:
return nil
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)