Вам нужно что-то вроде этого :::
let ref = Database.database().reference(withPath: "items")
ref.observe(.value) { (snapshot) in
guard let dict = snapshot.value as? NSArray else { return }
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
dict.forEach { (value) in
do {
let itemData = try JSONSerialization.data(withJSONObject: value,options: .prettyPrinted)
let item = try decoder.decode(Item.self, from: itemData)
self.items.append(item)
}
catch let err {
print(err.localizedDescription)
}
}
self.yourtableView.reloadData()
print(self.items) // This
print(self.items[0]) // works
}
И вам нужно реализовать numberOfRows в методе пути индекса
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
и вернуть туда items.count.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
itemType = String(describing: (self.items[indexPath.row].item_type)) // terminating with index out of range error
//...
}