Posts

Post not yet marked as solved
1 Replies
994 Views
I am trying to implement a logout button in my application using swift. Users are authenticated through firebase. This is the function that I am currently working on:  @IBAction func buttonLogOut(_ sender: Any) {            do     {       try Auth.auth().signOut()       let storyboard = UIStoryboard(name: "Main", bundle: nil)       let loginVC = storyboard.instantiateViewController(withIdentifier: "login View Controller") as! loginVC       let appDelegate = UIApplication.shared.delegate as! AppDelegate       appDelegate.window?.rootViewController = loginVC       self.performSegue(withIdentifier: "Dashboard", sender: self)     }     catch let error as NSError     {       print(error.localizedDescription)     }               }              } I am getting these errors on the following lines and Im unsure how to solve this let loginVC = storyboard.instantiateViewController(withIdentifier: "loginViewController") as! Main Cannot find type 'Main' in scope And appDelegate.window?.rootViewController = loginVC Value of type 'AppDelegate' has no member 'window'
Posted Last updated
.
Post not yet marked as solved
4 Replies
1.1k Views
I am currently trying to develop an application that fetches users data from a firebase database and displays it in a table view. The function that I am having problems with is the function that loads the data. class EntryViewController: NSObject {       var event :String?   var dateAndTime: String?   var message: String?   // id which is set from firebase to uniquely identify it   var uniqueId:String?     } class LoggingViewController: UIViewController {       var entryviewcontroller:EntryViewController?        @IBOutlet weak var eventTextBox: UITextField!   @IBOutlet weak var datePicker: UIDatePicker!   @IBOutlet weak var notesTextBox: UITextField!       @IBAction func saveEntryButton(_ sender: Any) {         if entryviewcontroller == nil {        entryviewcontroller = EntryViewController()      }          let dateFormatter = DateFormatter()      dateFormatter.dateFormat = "dd/MM/yyyy hh:mm a"      entryviewcontroller?.event = self.eventTextBox.text ;      entryviewcontroller?.message = self.notesTextBox.text      entryviewcontroller?.dateAndTime = dateFormatter.string(from: self.datePicker.date)            let db = Firestore.firestore()      guard let uid = Auth.auth().currentUser?.uid else {        return      }            db.collection("usersEvents").document(uid).setData([        "event" : entryviewcontroller!.event! ,        "dateAndTime" : entryviewcontroller!.dateAndTime!,        "message" : entryviewcontroller!.message!]){                    err in          if let err = err {            print("Error writing document: \(err)")            return          } else {            print("Document successfully written!")          }        }     func viewDidLoad() {       super.viewDidLoad()     }   }    }     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() } } } } This is the class thats being developed for the dashboard page of the application. The following error messages are displayed Value of type '[EntryViewController]' has no member 'event' Value of type '[EntryViewController]' has no member 'dateAndTime' Value of type '[EntryViewController]' has no member 'message' This is where the errors keep appearing 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) }
Posted Last updated
.
Post marked as solved
4 Replies
1.5k Views
I am creating an application where users can set reminders for things. The application is connected to a firebase database where all of the data is stored. When the user saves the the event that they are setting this new even should appear on the home page in a table view. I keep getting the error: "Extra trailing closure passed in call" I have been unable to find a solution that fixes the function so I am able to view the data. Here is my code below import FirebaseAuth import Firebase import FirebaseDatabase import FirebaseFirestore class DashboardViewController: UIViewController {   @IBOutlet weak var reminderList: UITableView!   var reminders = [EntryViewController]()    func viewWillAppear(animated: Bool) {   viewWillAppear(animated: animated)     loadData()   }         func loadData() {     self.reminders.removeAll()     let ref = Database.database().reference()     ref.child("usersEvents").observeSingleEvent(of: .value, withBlock: { (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()             }) { (error) in         print(error.localizedDescription)      }   }       func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {     return self.reminders.count   }   func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {     let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoCell")     cell!.textLabel?.text = reminders[indexPath.row].event     return cell!   }     } I am getting the error on this line   }) { (error) in
Posted Last updated
.