Swift3 如何从枚举的swift数组中删除值

Swift3 如何从枚举的swift数组中删除值,swift3,Swift3,与此类似 但对于枚举 如何删除具有给定枚举的值(该枚举的本机swift enum) 不允许从这些枚举的数组中进行比较 无法将该枚举转换为Int,因为存在一些参数化的情况 示例代码(未编译): 嗯,这不是很重要吗。它就在错误消息中 Binary operator '!=' cannot be synthesized for enums with associated values 快速回答: arr = arr.filter { switch $0 { case .foo: re

与此类似

但对于枚举

如何删除具有给定枚举的值(该枚举的本机swift enum) 不允许从这些枚举的数组中进行比较

无法将该枚举转换为Int,因为存在一些参数化的情况

示例代码(未编译):


嗯,这不是很重要吗。它就在错误消息中

Binary operator '!=' cannot be synthesized for enums with associated values
快速回答:

arr = arr.filter {
    switch $0 {
    case .foo: return true
    default: return false
    }
}
更简洁的回答:

arr = arr.filter { if case .foo = $0 { return true } else { return false } }
更易于维护的答案:

如果
测试中只有几个值
,请将逻辑移到枚举中

extension test {

    var isFoo: Bool {
        switch self {
        case .foo: return true
        default: return false
        }
    }

    var isBar: Bool {
        switch self {
        case .bar: return true
        default: return false
        }
    }

}

arr = arr.filter { $0.isFoo }

嗯,这不是很重要吗。它就在错误消息中

Binary operator '!=' cannot be synthesized for enums with associated values
快速回答:

arr = arr.filter {
    switch $0 {
    case .foo: return true
    default: return false
    }
}
更简洁的回答:

arr = arr.filter { if case .foo = $0 { return true } else { return false } }
更易于维护的答案:

如果
测试中只有几个值
,请将逻辑移到枚举中

extension test {

    var isFoo: Bool {
        switch self {
        case .foo: return true
        default: return false
        }
    }

    var isBar: Bool {
        switch self {
        case .bar: return true
        default: return false
        }
    }

}

arr = arr.filter { $0.isFoo }

具有关联值的枚举未隐式标记为Equatable。你必须提出要求。但是如果相关的值本身是相等的(我相信是从Swift 4.2开始的),那么这就是你所要做的

更改:

enum Test
致:


(注意:枚举是类型,应始终大写)

带有关联值的枚举未隐式标记为Equatable。你必须提出要求。但是如果相关的值本身是相等的(我相信是从Swift 4.2开始的),那么这就是你所要做的

更改:

enum Test
致:


(注意:枚举是类型,应该始终大写)

向我们展示代码,可能是关于您尝试了什么以及如何…?您所说的“不允许比较的本机swift枚举”是什么意思?您能举个例子吗?添加的示例代码向我们展示代码,可能是关于您尝试了什么以及如何…?您所说的是什么意思“不允许比较的本机swift枚举?”您能举个例子吗?添加了示例代码