这是我的枚举
enum urlLink: String {
case linkOne = "http://test.com/linkOne"
}
它在我的大多数情况下运作良好。但是,我现在想要创建另一个带参数的链接,它看起来像这个
"http://test.com/:params/info"
有没有办法可以将字符串参数添加到我的一个枚举案例中,这样我就可以为linkTwo添加类似的内容
enum urlLink: String {
case linkOne = "http://test.com/linkOne"
case linkTwo(input: String) = "http://test.com/" + input + "info"
}
非常感谢你!
答案 0 :(得分:1)
您无法将原始值添加到具有关联值的枚举中。但是,您可以为枚举添加属性和方法,因此您可以执行以下操作:
enum urlLink: CustomStringConvertible {
case linkOne
case linkTwo(input: String)
var description: String {
switch self {
case .linkOne:
return "http://test.com/linkOne"
case .linkTwo(let input):
return "http://test.com/\(input)info"
}
}
}
您还可以符合RawRepresentable
:
enum urlLink: RawRepresentable {
case linkOne
case linkTwo(input: String)
var rawValue: String {
switch self {
case .linkOne:
return "http://test.com/linkOne"
case .linkTwo(let input):
return "http://test.com/\(input)info"
}
}
init?(rawValue: String) {
if rawValue == "http://test.com/linkOne" {
self = .linkOne
return
} else {
self = // some regex logic to get the "input" part
return
}
return nil
}
typealias RawValue = String
}