ios - 在另一个 Observable Bool 变量中获取 Observable Bool 变量的结果?
问题描述
假设我们有这段代码:
var clientLinesLoaded:Bool = Bool() {
didSet{
print(clientLinesLoaded)
if(clientLinesLoaded == true){
print("->->->->-> clientLinesLoaded")
}else{
print("->->->->-> error loading...")
}
}
}
var clientDatasLoaded:Bool = Bool() {
didSet{
print(clientDatasLoaded)
if(clientDatasLoaded == true){
print("->->->->-> clientLinesLoaded")
}else{
print("->->->->-> error loading...")
}
}
}
当两个变量都设置为“true”时,我试图触发另一个 didSet
所以这就是我的想法...
override func viewDidLoad() {
super.viewDidLoad()
var loaderMustDisappear:Bool = Bool(self.clientLinesLoaded && self.clientDatasLoaded) {
didSet {
print ("value is: ",loaderMustDisappear)
if(loaderMustDisappear){
print("remove loader")
self.cargador.isHidden=true
}else{
print("loading failed, do actions to control")
}
}
}
}
前 2 个 didSet 在更改其值时正确触发。
问题是loaderMustDisappear 上的 didSet 从未被调用,我不确定为什么会发生这种情况......
有人处理过这样的情况吗?
谢谢大家!
解决方案
我不知道你的代码为什么会工作,因为loaderMustDisappear
变量是在其中声明的,viewDidLoad
并且你正在更改另一个函数的值clientLinesLoaded
和clientDatasLoaded
来自另一个函数的值。
但是您可以使用closures
. 在你的类中声明一个闭包:
var loaderMustDisappearClosure : (()->())?
在两个Bool
变量中:
var clientLinesLoaded:Bool = Bool() {
didSet{
print(clientLinesLoaded)
if(clientLinesLoaded == true){
print("->->->->-> clientLinesLoaded")
self. loaderMustDisappearClosure?()
}else{
print("->->->->-> error loading...")
}
}
}
var clientDatasLoaded:Bool = Bool() {
didSet{
print(clientDatasLoaded)
if(clientDatasLoaded == true){
print("->->->->-> clientLinesLoaded")
self. loaderMustDisappearClosure?()
}else{
print("->->->->-> error loading...")
}
}
}
并在viewDidLoad
:
self.loaderMustDisappearClosure = {
if self.clientLinesLoaded && self.clientDatasLoaded {
print("Disappear Loader")
}
}
self.clientLinesLoaded = true
self.clientDatasLoaded = true
true
设置为.后何时执行此操作clientDatasLoaded
。消失加载程序将在控制台中打印。所以你可以在课堂上的任何地方实现这一点。
希望这有助于您想要实现的目标。