![](/img/trans.png)
[英].toggle() function on bool does not call didSet. Is this a bug?
[英]Swift call a method after 2 bool didset call
我有2個布爾用Didset方法。 在兩個didset內部,它調用了相同的方法。 所以我想在2個bool設置完后調用一個方法
var canDo: Bool {
didSet {
reload()
}
}
var isView: Bool {
didSet {
reload()
}
}
var canDo: Bool {
didSet {
if isView{
reload()
}
}
}
var isView: Bool {
didSet {
if canDo{
reload()
}
}
}
我建議使用一個新函數來處理何時調用reload()
的邏輯,而不要在兩個didSet
的邏輯中都didSet
該邏輯。 這樣,如果需要添加新邏輯,則可以將其添加到一個位置:
var canDo: Bool {
didSet { maybeReload() }
}
var isView: Bool {
didSet { maybeReload() }
}
private func maybeReload() {
guard
canDo,
isView
else { return }
reload()
}
我們可以借助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()
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.