我正在为splitviewcontroller中的字典应用程序编写代码。我设置了一个包含各种条目的"Word"类,当我尝试标记它们时,计算机现在不会读取这些条目。
导入 UIKit
class DetailViewController: UIViewController {
class Word {
let name: String
let meaning: String
let numberOfTimesTapped: String
init(name: String, meaning: String, numberOfTimesTapped: String) {
self.name = name
self.meaning = meaning
self.numberOfTimesTapped = numberOfTimesTapped
}
}
@IBOutlet weak var WordLabel: UILabel!
@IBOutlet weak var DescriptionLabel: UILabel!
@IBOutlet weak var NumberOfTimesTappedLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
func refreshUI() {
loadViewIfNeeded()
WordLabel.text = word?.name //[THIS IS WHERE I GET THE ERROR: "Cannot capture 'word' before it is declared" ALTHOUGH IT'S BEEN CLEARLY DECLARED BEFORE!!!]
DescriptionLabel.text = word?.meaning
NumberOfTimesTappedLabel.text = word?.numberOfTimesTapped
}
var word: Word? {
didSet {
refreshUI()
}
}
如果您使用正确的缩进,您会发现它更容易,但是您在refreshUI
内部声明var word
。您需要在此之外声明它,以便可以在 refreshUI
内部访问范围。此外,您在viewDidLoad
内部声明refreshUI
,这很可能不是您想要的。此代码的固定版本将是
var word: Word? {
didSet {
refreshUI()
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
func refreshUI() {
loadViewIfNeeded()
WordLabel.text = word?.name
DescriptionLabel.text = word?.meaning
NumberOfTimesTappedLabel.text = word?.numberOfTimesTapped
}