1

我有 2 个带有 didset 方法的布尔值。在两个 didset 内部,它调用了相同的方法。所以我想在调用了 2 个 bool 集合之后调用一个方法

var canDo: Bool {
    didSet {
        reload()
    }
}

var isView: Bool {
    didSet {
        reload()
    }
}
4

3 回答 3

4
var canDo: Bool {
    didSet {
        if isView{
            reload()
        }

    }
}

var isView: Bool {
    didSet {
        if canDo{
            reload()
        }

    }
}
于 2019-04-12T10:22:53.170 回答
0

我建议使用一个新函数来处理何时调用reload()的逻辑,而不是在两者中都有逻辑didSet。这样,如果需要添加新逻辑,可以将其添加到一个地方:

var canDo: Bool {
    didSet { maybeReload() }
}

var isView: Bool {
    didSet { maybeReload() }
}

private func maybeReload() {
    guard
        canDo,
        isView
        else { return }

    reload()
}
于 2019-04-12T18:45:56.710 回答
-1

我们可以借助Optionals

现在当更新你的代码时

var canDo: Bool? {
    didSet {
        if isView != nil {
         reload()
        }
    }
}

var isView: Bool? {
    didSet {
        if canDo != nil {
         reload()
        }
    }
}

编辑

如果您的意思是设置,true那么只需忽略上述内容并添加

var canDo: Bool {
    didSet {
        if isView {
         reload()
        }
    }
}

var isView: Bool {
    didSet {
        if canDo {
         reload()
        }
    }
}
于 2019-04-12T10:10:45.780 回答