我在Swift中使用计算属性实现了一个枚举语句。我想添加有条件编译的值,例如仅适用于某些配置。
以下是我尝试做的一个例子:
enum Rows: Int
{
case Row1
case Row2
#if DEBUG
case Debug
#endif
var rowTitle: String
{
case Row1: return "Row 1"
case Row2: return "Row 2"
#if DEBUG
case Debug: return "Debug"
#endif
}
}
这似乎得到支持,因为我在switch语句中的case语句中收到以下错误消息:
'壳体'标签只能出现在'开关内?声明
有没有办法在Swift中执行此操作?
谢谢,
的 大卫
答案 0 :(得分:2)
这是Swift中的known bug。目前无法在交换机内进行条件编译。
答案 1 :(得分:1)
enum案例的条件编译现在可以在Swift 4中使用。
enum Foo {
case bar
#if DEBUG
case baz
#endif
}
let bar = Foo.bar
#if DEBUG
let baz = Foo.baz
#endif
答案 2 :(得分:0)
条件编译的语法看起来是正确的。但是,当我将代码粘贴到游乐场时,我会遇到多个错误。第一个是以var rowTitle
开头的行,错误是“枚举可能不包含存储的属性”。
答案 3 :(得分:0)
这是您的代码版本,在语法上对于计算变量rowTitle
的实现是正确的:
enum Rows: Int
{
case Row1
case Row2
var rowTitle: String {
switch self {
case Row1:
return "Row 1"
case Row2:
return "Row 2"
}
}
}
说,这可能就是你在问题中的意思......但是不起作用:
enum Rows: Int
{
case Row1
case Row2
#if DEBUG
case Debug
#endif
var rowTitle: String {
switch self {
case Row1:
return "Row 1"
case Row2:
return "Row 2"
}
#if DEBUG
switch self {
case Debug:
return "Debug"
default:
break
}
#endif
}
}
编译器不会给您任何错误,但您将无法使用Debug
案例。