Ошибка: «Не удается перехватить слово» до того, как оно будет объявлено »iOS swift - PullRequest
0 голосов
/ 05 июня 2019

Я пишу код для словарного приложения в splitviewcontroller. Я установил класс «Word» с различными записями, которые теперь не читаются компьютером, когда я пытаюсь пометить их.

импорт UIKit

класс 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()

        }
    }

1 Ответ

2 голосов
/ 05 июня 2019

Вы бы видели намного проще, если бы использовали правильный отступ, но вы объявляете var word внутри из refreshUI. Вам нужно объявить это вне этого, чтобы область была доступна внутри refreshUI. Также вы объявляете refreshUI внутри из viewDidLoad, что, скорее всего, не то, что вы хотите. Фиксированная версия этого кода будет

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...