【问题标题】:Trouble appending elements to an array [duplicate]无法将元素附加到数组[重复]
【发布时间】:2019-03-31 18:48:51
【问题描述】:

我正在尝试从我的 firebase 中获取数据,将其推送到数组中,然后将其放在表格视图中。问题是当我打印数组时,控制台显示数组里面什么都没有。

let ref = Database.database().reference()
ref.child("Events").observe(.value, with: {(data) in
    let events = data.value as! NSDictionary
    for event in events {
        let dict = event.value as? [String : Any]
        print(dict?["EventTitle"]) 
        self.eventsArray.append(dict?["EventTitle"] as! String)
    }
)} 
print(eventsArray)

这段代码在我的viewDidLoad 的 UITableViewController 类中。该数组在 viewDidLoad 方法上方定义为var eventsArray = [String]()

这是我的 Firebase 数据:

现在我只是尝试访问 EventTitle 并将其粘贴到表格视图中,但在此之前,我需要将它放入一个数组中,如您所见,这不起作用。

【问题讨论】:

  • 您能否尝试打印字典中的所有键,以便我们更好地诊断问题?
  • 很抱歉之前没有提出,但下面发布的解决方案有效,所以我会坚持下去

标签: ios swift iphone swift4


【解决方案1】:

observe 异步工作。将print 行放在完成块中。

并使用适当的字典枚举 API 和 Swift 原生类型

let ref = Database.database().reference()
ref.child("Events").observe(.value, with: {(data) in
    let events = data.value as! [String:[String:String]]
    for (_, value) in events {
        print(value["EventTitle"]) 
        self.eventsArray.append(value["EventTitle"]!)
    }
    print(eventsArray)
)} 

考虑为事件使用数组而不是字典

【讨论】:

  • 感谢您的帮助!我对这些东西真的很陌生,因为我在 9 年级。
  • 当我在闭包外打印 eventsArray 时,它显示数组为空,这意味着我无法修复用它填充表格视图,我该怎么办?
  • 在闭包内完成所有你必须做的事情(将结果分配给数据源并重新加载表格视图)。
猜你喜欢
  • 2013-10-05
  • 2019-08-13
  • 2021-07-04
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 2014-02-24
  • 1970-01-01
相关资源
最近更新 更多