【问题标题】:Element not appending to array from FireBase元素未从 FireBase 附加到数组
【发布时间】:2017-02-14 14:07:46
【问题描述】:

我终于能够从 firebase 中提取数据,并且可以显示它,但由于某种原因它没有附加到我想要的数组中,这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    var arr = [String]()
    DataService.instance.recievers.observeSingleEvent(of: .value) {(recipients: FIRDataSnapshot) in
        if let recievers = recipients.value as? [String]{
            for i in recievers{
                print(i)
                arr.append(i)
            }
        }
    }

    for i in arr{
        print(i)
    }
}

数据正在从 print(i) 语句打印到控制台,但是一旦我离开第一个 for 循环,它就会清空数组。谁能告诉我为什么,以及如何解决这个问题?

【问题讨论】:

    标签: arrays swift firebase firebase-realtime-database


    【解决方案1】:

    Firebase 代码是异步的。它正在附加它,但是当它附加到数组时,你的

    for i in arr {
        print(i)
    }
    

    语句已经执行。从 Firebase 检索数据后,您应该从 observeSingleEvent 内部回调一个函数以执行某些操作。

    override func viewDidLoad() {
        super.viewDidLoad()
        var arr = [String]()
        DataService.instance.recievers.observeSingleEvent(of: .value) {(recipients: FIRDataSnapshot) in
            if let recievers = recipients.value as? [String]{
                for i in recievers{
                    print(i)
                    arr.append(i)
                }
                displayArray(arr)
            }
        }
    }
    
    func displayArray(name: [String]) {
        for i in arr{
            print(i)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 2021-07-04
      • 2014-02-24
      • 1970-01-01
      • 2018-05-19
      • 2021-03-05
      • 2020-07-07
      • 2016-12-22
      • 1970-01-01
      相关资源
      最近更新 更多