I don't have a storyboard. I'm doing everything programmatically.
The loadData()
method takes Firebase data, put it into a Company
object, and loads the object into the companies
array. In the didFinishLaunchingWithOptions
method in the App Delegate, I instantiated the class and called loadData()
When I run breakpoint at the line indicated by the comment and type "po companies" in the console, I get 0 companies. The print statements inside .observe
are printed to the console and I can see that the company's properties are non-null, but anything outside .observe
, including the for loop and the print statement called after the load data method in the App Delegate are not printed.
class informationStateController {
func loadData() {
//Set firebase database reference
ref = FIRDatabase.database().reference()
//Retrieve posts and listen for changes
databaseHandle = ref?.child("companies").observe(.childAdded, with: { (snapshot) in
//Code that executes when child is added
let company = Company()
company.name = snapshot.childSnapshot(forPath: "name").value as! String
print(company.name)
company.location = snapshot.childSnapshot(forPath: "location").value as! String
print(company.location)
self.companies.append(company)
print("databaseHandle was called")
})
for company in companies {
print(company)
}
//breakpoint inserted here
}
}
Why is my array empty and why are print statements outside .observe
NOT printing to the console? The output for the console is set to "All Output". I called import FirebaseDatabase
in the class and import Firebase
in the App Delegate.