user15052509
user15052509

Reputation:

retrieve data from firestore if textField has specific text swift

I'm new to development and im using Firestore in my application, my goal is to get data from Firestore when the user writes "Hello World" in the textField. I managed to get data from the Firestore and everything is fine but when I use the if statement the function not launch the code.

this is my code without using if statement and it works 100%

import UIKit
import FirebaseFirestore
import Firebase
import FirebaseAuth

class orderTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {

 @IBOutlet var order: UITableView!

 @IBOutlet var userNameField: UITextField!


var db: Firestore!
let DocRefernce:DocumentReference! = nil
var street = [String]()
var firstName = [String]()
var lastName = [String]()
var blockNumber = [String]()
var phone = [String]()
var houseNumber = [String]()
var block = [String]()
var Area = [String]()


override func viewDidLoad() {
    
    
    super.viewDidLoad()
    
    
    
    
    order.register(UINib(nibName: "Order1TableViewCell", bundle: nil) , forCellReuseIdentifier: "order")
    
    
    
    order.separatorStyle = .none
    order.dataSource = self
    order.delegate = self
    
    db = Firestore.firestore()
    self.navigationItem.setHidesBackButton(true, animated: true)
    
    loadData1()
    loadData2()
}


   func loadData1() {
    
    
    db.collection("Hi").getDocuments()
    {
        (querySnapshot, err) in
        
        if let err = err
        {
            print("Error getting documents: \(err)");
        }
        else
        {
           
            for document in querySnapshot!.documents {
           
                print("\(document.documentID) => \(document.data())");
                
                self.firstName.append(document.get("firstname") as? String ?? "")
                self.lastName.append(document.get("lastname") as? String ?? "")
                self.street.append(document.get("street") as? String ?? "")
                self.blockNumber.append(document.get("blockNumber") as? String ?? "")
                self.Area.append(document.get("area") as? String ?? "")
                self.phone.append(document.get("phone") as? String ?? "")
                self.houseNumber.append(document.get("houseNumber") as? String ?? "")

                
            }
            
            
        }
        self.order.reloadData()
    }
    
    
}




func loadData2() {
    
    
    db.collection("hola").getDocuments()
    {
        (querySnapshot, err) in
        
        if let err = err
        {
            print("Error getting documents: \(err)");
        }
        else
        {
         
            for document in querySnapshot!.documents {
            
                print("\(document.documentID) => \(document.data())");
                
                self.firstName.append(document.get("firstname") as? String ?? "")
                self.lastName.append(document.get("lastname") as? String ?? "")
                self.street.append(document.get("street") as? String ?? "")
                self.blockNumber.append(document.get("blockNumber") as? String ?? "")
                self.Area.append(document.get("area") as? String ?? "")
                self.phone.append(document.get("phone") as? String ?? "")
                self.houseNumber.append(document.get("houseNumber") as? String ?? "")
                
            }
        }
        self.order.reloadData()
    }
   }

 }

and this is the code where I use if statement but I couldn't manage to get data from the Firestore.

import UIKit
import FirebaseFirestore
import Firebase
import FirebaseAuth

class orderTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {




@IBOutlet var order: UITableView!
@IBOutlet var userNameField: UITextField!



var db: Firestore!
//  let DocRefernce:DocumentReference! = nil
var street = [String]()
var firstName = [String]()
var lastName = [String]()
var blockNumber = [String]()
var phone = [String]()
var houseNumber = [String]()
var block = [String]()
var Area = [String]()


override func viewDidLoad() {
    
 
    super.viewDidLoad()
    
    
    userNameField.delegate = self
    
    
    order.register(UINib(nibName: "Order1TableViewCell", bundle: nil) , forCellReuseIdentifier: "order")
    
    
    
    order.separatorStyle = .none
    order.dataSource = self
    order.delegate = self
    
    db = Firestore.firestore()
    self.navigationItem.setHidesBackButton(true, animated: true)
 if userNameField.text == "Hello World" {
     loadData1()
    } else {
        loadData2()
        
    }
    
  }




  func loadData1() {
    
    
    db.collection("Hi").getDocuments()
    {
        (querySnapshot, err) in
        
        if let err = err
        {
            print("Error getting documents: \(err)");
        }
        else
        {
         
            for document in querySnapshot!.documents {
                
                print("\(document.documentID) => \(document.data())");
                
                self.firstName.append(document.get("firstname") as? String ?? "")
                self.lastName.append(document.get("lastname") as? String ?? "")
                self.street.append(document.get("street") as? String ?? "")
                self.blockNumber.append(document.get("blockNumber") as? String ?? "")
                self.Area.append(document.get("area") as? String ?? "")
                self.phone.append(document.get("phone") as? String ?? "")
                self.houseNumber.append(document.get("houseNumber") as? String ?? "")

                
            }
            
            
        }
        self.order.reloadData()
    }
}




func loadData2() {
    
    
    db.collection("hola").getDocuments()
    {
        (querySnapshot, err) in
        
        if let err = err
        {
            print("Error getting documents: \(err)");
        }
        else
        {
           
            for document in querySnapshot!.documents {
                
                print("\(document.documentID) => \(document.data())");
                
                self.firstName.append(document.get("firstname") as? String ?? "")
                self.lastName.append(document.get("lastname") as? String ?? "")
                self.street.append(document.get("street") as? String ?? "")
                self.blockNumber.append(document.get("blockNumber") as? String ?? "")
                self.Area.append(document.get("area") as? String ?? "")
                self.phone.append(document.get("phone") as? String ?? "")
                self.houseNumber.append(document.get("houseNumber") as? String ?? "")
               
                
            }
      }
        self.order.reloadData()
    }
 }
}

Upvotes: 0

Views: 105

Answers (1)

wictorious
wictorious

Reputation: 951

Here's my solution that has already been briefly explained in the comment.

override func viewDidLoad() {
    super.viewDidLoad()
    // The rest of your code besides that if statement should go in here...
    userNameField.delegate = self
}


extension orderTableViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // This is where your if statement goes
        if textField.text == "Hello World" {
            loadData1()
        } else {
            loadData2()
        }
    }
}

Upvotes: 1

Related Questions