Post not yet marked as solved
I have made these changes to the code
func loadData() {
self.reminders.removeAll()
let ref = Database.database().reference()
ref.child("usersEvents").observeSingleEvent(of: .value, with: { (snapshot) in
if let reminderDict = snapshot.value as? [String:AnyObject] {
print(reminderDict) // Just to check
for (_,reminderElement) in reminderDict {
if let remindIt = reminderElement as? [String: Any] { // Cast AnyObject to [String: Any]
let reminder = Reminders
reminder.event = (remindIt["event"] as? String) ??
reminder.dateAndTime = (remindIt["data and time"] as? String) ?? // <<-- Is the key data and
reminder.message = (remindIt["notes"] as? String) ??
self.reminders.append(reminder)
}
}
}
}, withCancel: { (error) in
print(error.localizedDescription)
})
However I keep getting the error messages
let reminder = Reminders
Cannot find 'Reminders' in scope
and
self.reminders.append(reminder)
Cannot convert value of type '()' to expected argument type 'String'
I am unsure of what the " let reminder = Reminders:" is meant to be. I assume that it connects and stores the variables however I am unsure. It has been the biggest problem I have faced so far and just cant wrap my head around it.
Post not yet marked as solved
Thank you for the reply, apologies I did not see your response on my other post and I am new to the language. I am unsure of what you mean by call reminders[someIndex].dateAndTime or more probably reminder.dateAndTime (not reminders with an s).
When i change
let reminder = Reminder()
reminders.event = reminderElement["event"] as? String
reminders.dateAndTime = reminderElement["data and time"] as? String
reminders.message = reminderElement["notes"] as? String
self.reminders.append(reminder)
to this
let reminder = reminders
reminder.event = reminderElement["event"] as? String
reminder.dateAndTime = reminderElement["data and time"] as? String
reminder.message = reminderElement["notes"] as? String
self.reminders.append(reminder)
I just get a bunch of errors. I am not sure if I understand what it is your saying to do or if I have missed a step
When I made the adjustments to the code I keep getting one error
Cannot find 'of' in scope
I keep getting this error here.
ref.child("usersEvents").observeSingleEvent(of .value, with: { (snapshot) in
This is the new code with the adjustments made I have made every change I can think of but just cant get it to go away
import UIKit
import FirebaseAuth
import Firebase
import FirebaseDatabase
import FirebaseFirestore
class DashboardViewController: UIViewController {
@IBOutlet weak var reminderList: UITableView!
var reminders = [EntryViewController]()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
loadData()
}
func loadData() {
self.reminders.removeAll()
let ref = Database.database().reference()
ref.child("usersEvents").observeSingleEvent(of .value, with: { (snapshot) in
if let reminderDict = snapshot.value as? [String:AnyObject] {
for (_,reminderElement) in reminderDict {
print(reminderElement);
let reminder = Reminder()
reminders.event = reminderElement["event"] as? String
reminders.dateAndTime = reminderElement["data and time"] as? String
reminders.message = reminderElement["notes"] as? String
self.reminders.append(reminder)
}
}
self.tableView.reloadData() // Should it be inside the if let ?
}, withCancel: { (error) in
print(error.localizedDescription)
})
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.reminders.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoCell") {
var content = cell.defaultContentConfiguration()
content.text = reminders[indexPath.row].event
cell.contentConfiguration = content
return cell
} else {
return UITableViewCell()
}
}
}
}