如果ObjC函数返回带有枚举的状态值,是否可以在Swift 3中获取枚举的字符串?如果我执行debugPrint("\(status)")
或print("\(status)")
,我只会得到枚举的名称而不是值。如果我执行status.rawValue
,我会得到int,但是解释起来并不重要。
最佳答案
您还可以将Obj-C枚举的符合性添加到CustomStringConvertible
中,然后以这种方式将值转换为字符串。只要您不使用default
,这些值中的任何一个在将来的版本中会发生变化,您都将收到警告。
例如:
extension NSLayoutAttribute : CustomStringConvertible {
public var description: String {
switch self {
case .left : return "left"
case .right : return "right"
case .top : return "top"
case .bottom : return "bottom"
case .leading : return "leading"
case .trailing : return "trailing"
case .width : return "width"
case .height : return "height"
case .centerX : return "centerX"
case .centerY : return "centerY"
case .lastBaseline : return "lastBaseline"
case .firstBaseline : return "firstBaseline"
case .leftMargin : return "leftMargin"
case .rightMargin : return "rightMargin"
case .topMargin : return "topMargin"
case .bottomMargin : return "bottomMargin"
case .leadingMargin : return "leadingMargin"
case .trailingMargin : return "trailingMargin"
case .centerXWithinMargins : return "centerXWithinMargins"
case .centerYWithinMargins : return "centerYWithinMargins"
case .notAnAttribute : return "notAnAttribute"
}
}
}
关于objective-c - 在Swift 3中获取ObjC枚举的名称吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40828769/