I have an array of struct called displayStruct
struct displayStruct{
let price : String!
let Description : String!
}
I am reading
Firebase observe
call to the database is asynchronous
which means when you are requesting for the value it might not be available as it might be in process of fetching it.
That's why your both of the queries to count
returns 0 in viewDidLoad
and DataSource delegeate
method.
databaseRef.child("Post").queryOrderedByKey().observe(.childAdded, with: { // inside closure }
Inside the closure, the code has been already executed and so you have the values.
What you need to do is you need to reload your Datasource
in main thread inside the closure.
databaseRef.child("Post").queryOrderedByKey().observe(.childAdded, with: {
// After adding to array
DispatchQueue.main.asyc {
self.tableView.reloadData()
}
}