我有一个SearchURL字符串,它从前一个视图控制器获取选择变量。有了这个变量,SearchURL应该用在callAlamo函数中。但我有一个错误:
我应该使用异步调度还是这样的?我尝试过很多东西,比如将所有东西放在viewDidLoad()中但是没有用。有人可以帮忙吗?
答案 0 :(得分:2)
您可以像这样使用计算属性:
var searchURL: String {
return "https://theurlIcantcopybecauseitsascreenshot.com/\(chosed!)"
}
请注意,每次访问时都会重新计算,因此如果chosed
发生更改,searchURL
也会发生变化。您也可以将其作为隐式解包的可选项,例如Paulo Mattos的答案,或者您可以创建一个以chosed
作为参数的初始值设定项(请参阅下面的注释,以获取警告)。然后,您可以在searchURL
中设置init
。
另外,只是一个让你知道的挑剔,Swift标准是在驼峰的情况下使用变量(searchURL
而不是SearchURL
)。
答案 1 :(得分:1)
每次进入视图控制器时,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建议的计算属性。