【问题标题】:SwiftUI: Read array value outside of functionSwiftUI:在函数之外读取数组值
【发布时间】:2020-07-02 11:56:56
【问题描述】:

在用数据库中的值填充结构数组之后,我已经加载了 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)
    }

如以下控制台输出所示,两个数组已成功填充。

但我无法读取正文视图中的数组。

    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 的值没有成员翻译。

但是当我在函数之外声明变量时,它也不起作用。老实说,我不了解变异函数,所以我有点迷茫。干杯。

【问题讨论】:

  • getArraysValues() 函数在哪里声明,你在哪里调用它?我假设在 View 结构内,但在 initonAppear?
  • 是的,它在 .onAppear ` .onAppear { print("soundpage load") self.getArrayValues()`

标签: arrays sqlite swiftui


【解决方案1】:

以防万一有人想知道,我最终将两个数组组合成一个二维数组,然后返回它。

    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
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多