gpt4 book ai didi

ios - 设置两个变量后如何调用方法

转载 作者:行者123 更新时间:2023-12-01 15:55:09 26 4
gpt4 key购买 nike

我正在使用 iOS Swift,我试图了解在请求完成后设置两个变量的值(非空值)后如何执行方法

阅读一些文档后,我发现了一些有趣的概念。第一个是 didSet,它作为一个观察者

如果我只需要一个变量,我可以通过简单地使用 didSet 来调用该方法

didSet

var myVar: String  0 {
didSet {
print("Hello World.")

}
}

尽管如此,我还需要等待第二个myVar2,所以它不起作用。

我还找到了 DispatchQueue,我可以用它在调用方法之前等待一秒钟(我使用的请求非常快)

调度队列

 DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute:  {
print("Hello world")
})

但我认为这个解决方案效率不高。

是否有办法组合这两个变量或请求,以便在完成设置值后调用方法?

更新我试图复制大卫的答案,我相信这是正确的,但我在每个 \.

上收到以下错误

Type of expression is ambiguous without more context

我在这里复制我当前的代码

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
}
}

变量是单独设置的,每个变量都有自己的请求。

最佳答案

您可以将属性设置为可选,并在调用函数之前检查它们是否已设置值。

var varA: String? = nil {
didSet {
if varA != nil && varB != nil {
myFunc()
}
}
}

var varB: String? = nil {
didSet {
if varA != nil && varB != nil {
myFunc()
}
}
}

或者您可以在每个 didSet 上调用您的函数,并在函数开头使用guard条件> 检查您的两个属性(property)是否都有值(value),或者退出:

var varA: String? = nil {
didSet {
myFunc()
}
}

var varB: String? = nil {
didSet {
myFunc()
}
}

func myFunc() {
guard varA != nil && varB != nil else { return }
// your code
}

关于ios - 设置两个变量后如何调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61914022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com