【发布时间】:2016-02-27 21:47:16
【问题描述】:
我有一个问题,我希望对枚举类型 (SearchFilterOptionType) 进行 switch-case,但由于某种原因 Swift/Xcode 编译器无法识别该成员。
我有以下枚举:
enum SearchFilterOptionType {
case Checkbox
case Selection
case Interval
case Text
}
我可以做到以下几点:
if dataElements[0].type == SearchFilterOptionType.Checkbox {
return
}
但如果我想用 switch-case 复制相同的内容,我会收到错误:
"Enum case 'Checkbox' 不是类型的成员 'SearchFilterOptionType!'"
switch dataElements[0].type {
case SearchFilterOptionType.Checkbox:
break
default:
break
}
添加
var dataElements: Array<SearchFilterOption>
struct SearchFilterOption {
var title: String!
var type: SearchFilterOptionType!
init(title: String, type: SearchFilterOptionType) {
self.title = title
self.type = type
}
}
【问题讨论】:
-
显示什么是
dataElements,首先如果你比较dataElements[0],在第二种情况下你比较dataElements[0].type- 这些是不同的值 -
对不起,我确实比较了 if 语句中的 dataElements[0].type。我已经更新了代码示例
-
显示什么是
dataElements -
看起来你像这样创建你的
type:var type: SearchFilterOptionType!,在这种情况下它是可选类型,你需要使用 switch 解包switch dataElements[0].type!在这种情况下,错误不会但是这是错误的,您需要检查该对象是否不是nil -
在使用带有非可选参数的
init方法时,将属性声明为隐式未包装的选项是完全没用的。删除结构中的所有感叹号,而不是摆脱所有这些东西来处理选项。
标签: ios swift enums switch-statement