我正在使用 iOS Swift,并且我试图了解如何method
在请求完成后设置两个变量的值(非空值)后执行。
在阅读了一些文档之后,我发现了一些有趣的概念。第一个是didSet
,它作为observer
.
didSet
如果我只需要一个变量,我可以使用此方法调用该方法
设置
var myVar: String 0 {
didSet {
print("Hello World.")
}
}
不过,我还需要等待第二个myVar2
,所以它不起作用。
我还发现DispatchQueue
了,我可以在调用该方法之前使用它等待一秒钟(我正在使用的请求非常快)
调度队列
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
print("Hello world")
})
但我认为这个解决方案效率不高。
无论如何将这两个变量或请求组合起来,以便在完成设置值后调用方法?
更新
我试图复制大卫的答案,我认为这是正确的,但我得到以下错误\.
在没有更多上下文的情况下,表达式的类型是模棱两可的
我在这里复制我当前的代码
var propertiesSet: [KeyPath<SearchViewController, Car>:Bool] = [\SearchViewController.firstCar:false, \SearchViewController.secondCar:false] {
didSet {
if propertiesSet.allSatisfy({ $0.value }) {
// Conditions passed, execute your custom logic
print("All Set")
} else {
print("Not yet")
}
}
}
var firstCar: Car? {
didSet {
propertiesSet[\SearchViewController.firstCar] = true
}
}
var secondCar: Car? {
didSet {
propertiesSet[\SearchViewController.secondCar] = true
}
}
变量是单独设置的,每个变量都是根据自己的要求设置的。