错误:"Cannot capture 'word' before it is declared" iOS swift



我正在为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
}

相关内容

最新更新