Swift Enum Equatable 预期参数问题
Swift Enum Equatable expected argument issue
我正在使用如下枚举:
enum Views: Equatable {
case home
case poules(pouleID: String?)
}
我必须将枚举变量设置为 .home
或 .poules
。 Poules 也可以有这样的参数:router.currentView = .poules(pouleID: "TEST")
.
但是,当我想测试变量的类型是.home
还是.poules
(而不是不想提取参数)时,我得到以下错误:
if router.currentView == .poules { // <--- (Error: Member 'poules(pouleID:)' expects argument of type 'String')
// Do something
}
我在这里做错了什么?我对其他枚举使用了相同的结构,没有遇到任何问题。
测试变量是否属于 .poules
类型的一种简单方法是将实际比较移动到枚举的计算 属性 中。这也是有道理的,因为这种比较并不是真正用于 Equatable
var isAnyPoules: Bool {
if case .poules = self { return true }
return false
}
这将使执行检查变得更容易
if router.currentView.isAnyPoules
或
.transition(viewRouter.originView.isAnyPoules ? X : X)
我正在使用如下枚举:
enum Views: Equatable {
case home
case poules(pouleID: String?)
}
我必须将枚举变量设置为 .home
或 .poules
。 Poules 也可以有这样的参数:router.currentView = .poules(pouleID: "TEST")
.
但是,当我想测试变量的类型是.home
还是.poules
(而不是不想提取参数)时,我得到以下错误:
if router.currentView == .poules { // <--- (Error: Member 'poules(pouleID:)' expects argument of type 'String')
// Do something
}
我在这里做错了什么?我对其他枚举使用了相同的结构,没有遇到任何问题。
测试变量是否属于 .poules
类型的一种简单方法是将实际比较移动到枚举的计算 属性 中。这也是有道理的,因为这种比较并不是真正用于 Equatable
var isAnyPoules: Bool {
if case .poules = self { return true }
return false
}
这将使执行检查变得更容易
if router.currentView.isAnyPoules
或
.transition(viewRouter.originView.isAnyPoules ? X : X)