SwiftUI: чтение значения массива вне функции - PullRequest
1 голос
/ 21 марта 2020

Я загрузил 2 массива по 16 значений каждый после заполнения массива структур значениями из базы данных. Вот код.

    func getArrayValues() {

        var btns: [String] = []
        var translations: [String] = []
        let buttonRows = DatabaseHelper().queryDatabase(passedCategory: category)

        for each in buttonRows {
            btns.append(each.english)
            translations.append(each.indonesian)
        }
        print(btns)
        print(translations)
    }

Два массива успешно заполняются, как показано в следующем выводе консоли. enter image description here

Но я не могу прочитать массивы в представлении тела.

    var body: some View {
        NavigationView {
            VStack {
                Text("\(self.translation)")
                .italic()
                    .frame(maxWidth: .infinity)
                HStack(spacing:0) {
                    VStack {
                        Button(action: {
                            playSound(sound: "\(self.category)_audio1", type: "mp3")
                            self.translation = self.translations[0]
                        }) {
                           Text("\(self.btn1)")
                        }

Я получаю сообщение об ошибке: Значение SoundPageView не имеет переводов элементов.

Но когда я объявляю переменную вне функции, она тоже не работает. Честно говоря, я не понимаю мутации функций, поэтому я немного растерялся. Приветствия.

1 Ответ

0 голосов
/ 22 марта 2020

На всякий случай, если кому-то интересно, я в итоге объединил два массива в двумерный массив и затем возвратил его.

    func getArrayValues() -> [[String]] {
        var btns: [[String]] = [[]]
        let buttonRows = DatabaseHelper().queryDatabase(passedCategory: category)
        for each in buttonRows {
            btns.append([each.english,each.indonesian])
        }
        gotValues = true
        return btns
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...