2 bool didset调用后Swift调用方法

时间:2019-04-12 09:48:22

标签: swift property-observer

我有2个布尔用Didset方法。在两个didset内部,它调用了相同的方法。所以我想在那两个bool设置了名为

的集合之后调用一个方法
var canDo: Bool {
    didSet {
        reload()
    }
}

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

3 个答案:

答案 0 :(得分:2)

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

    }
}

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

    }
}

答案 1 :(得分:0)

我们可以在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()
        }
    }
}

答案 2 :(得分:0)

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

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

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

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

    reload()
}