枚举类型的开关大小写

Switch case on enum type

我有一个问题,我希望对枚举类型 (SearchFilterOptionType) 执行 switch-case,但由于某些原因 Swift/the Xcode 编译器无法识别该成员.

我有以下枚举:

enum SearchFilterOptionType {
    case Checkbox
    case Selection
    case Interval
    case Text
}

我可以做到以下几点:

if dataElements[0].type == SearchFilterOptionType.Checkbox {
    return
}

但是如果我想用 switch-case 复制相同的内容,我会收到错误消息:

"Enum case 'Checkbox' is not a member of type '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
    }
}

这是因为您将 type 声明为可选。删除 !(感叹号)会有帮助。

试试这个

    switch dataElements[0].type! {
    case SearchFilterOptionType.Checkbox:
        break

    default:
        break
    }

注意错误消息和 switch 语句中的 !