我有一个 SearchURL 字符串,它从之前的视图控制器获取一个 chose 变量。有了这个变量,SearchURL 就应该在 callAlamo 函数中使用。但我有一个错误:
我应该使用异步调度还是类似的东西?我尝试了很多方法,例如将所有内容放入 viewDidLoad() 但没有成功。有人可以帮忙吗?
您可以像这样使用计算属性:
var searchURL: String {
return "https://theurlIcantcopybecauseitsascreenshot.com/\(chosed!)"
}
请注意,每次访问时都会重新计算,因此如果
chosed
发生变化,searchURL
也会发生变化。您还可以将其设置为隐式展开的可选选项,如 Paulo Mattos 的答案,或者您可以创建一个将 chosed
作为参数的初始值设定项(请参阅下面的注释,以了解警告)。然后您可以在 searchURL
中设置 init
。
另外,只是想告诉你,Swift 标准是使用驼峰式大小写变量(
searchURL
而不是 SearchURL
)。
viewDidLoad
不会在每次进入视图控制器时被调用,因此,您可能无法检测到chosed
属性的更新(以及其他棘手的问题)。你可以用
viewWillAppear
方法来代替:
var SearchURL: String!
overide func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
SearchURL = "...\(chosed!)..."
...
}
或者你可以使用
lazy变量:
lazy var SearchURL = {
return "...\(self.chosed!)..."
}()
或者按照下面 Connor Neville 的建议使用
计算属性。