给定以下示例:
enum ViewState {
case idle
case loading
case caseWithAssociatedValue(String)
}
class View {
private var state: ViewState = .idle
func setState(to state: ViewState) {
guard state != self.state else { return }
self.state = state
}
}
我无法比较 ViewState 类型的两个属性,并且我无法使用原始值进行比较,因为我的一个案例具有关联的值。
我正在寻找一种检查新值的状态是新值还是与当前值相同的方法。这可能吗?
使用 willSet 并执行以下操作
enum State : Equatable {
case idle
case active
case done(String)
}
class test {
var x: State {
willSet {
if x != newValue {
print("(x) -> (newValue)")
}
}
}
init(_ x: State) {
self.x = x
}
}
let t = test(State.idle)
t.x = State.active
t.x = State.done("We're done")
输出为
空闲 ->活动
active -> done("we're done"(