swift - 打印枚举标签的大写版本
问题描述
我似乎无法写下字符串的标签。
我有一个带有关联值的枚举,如下所示:
public enum HTTPMethod {
case get
case post(body: [String: Any])
case put
case delete
case patch
}
我可以打印值
let get = HTTPMethod.get
print (get) // get
但我真正想要的是枚举的名称,大写版本。
即得到将是得到
我正在尝试为此编写扩展:
extension HTTPMethod: CustomStringConvertible {
public var description: String {
return String(describing: self)
}
}
也不行
extension HTTPMethod: CustomStringConvertible {
public var description: String {
return String(describing: self)
}
}
带有反射的版本在我的实现中也不起作用:
extension HTTPMethod: CustomStringConvertible {
public var description: String {
let mirror = Mirror(reflecting: self)
return (mirror.children.first?.label)!
}
}
那么如何写枚举的大写标签呢?
解决方案
您应该在您的实现String
中自己添加表示。CustomStringConvertible
public enum HTTPMethod {
case get
case post(body: [String: Any])
case put
case delete
case patch
}
extension HTTPMethod: CustomStringConvertible {
public var description: String {
switch self {
case .get:
return "GET"
case .post:
return "POST"
case .put:
return "PUT"
case .delete:
return "DELETE"
case .patch:
return "PATCH"
}
}
}