В xcode, использующем Firebase Auth и Realtime Database, я пытаюсь создать приложение на основе информации, где пользователь входит в систему и видит информацию, которая уже была помещена в базу данных Realtime, а не всю базу данных.
Как связать аутентификацию с базой данных?Вот как выглядит моя текущая база данных:
введите описание изображения здесь
У меня есть два viewController, один для входа в систему и один, когда мы вошли в систему:
Вот мой код для моей страницы входа в систему:
import UIKit
import Firebase
class LoggedInViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var loginlbl: UILabel!
@IBOutlet weak var tbl: UITableView!
var ref: DatabaseReference!
var jobList = [JobModel]()
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let job = jobList[indexPath.row]
let alertController = UIAlertController(title:job.shipper, message:"Update", preferredStyle:.alert)
let deleteAction = UIAlertAction(title: "Delete", style:.default){(_) in
//self.deleteAction(job: job!)
}
let updatedAction = UIAlertAction(title: "Update", style:.default){(_) in
let id = job.id
let collected = alertController.textFields?[0].text
let delievered = alertController.textFields?[1].text
// ref.child("job").setValue("collected")
//self.update(collected: collected!, delievered: delievered!)
}
alertController.addTextField{(textField) in
textField.text = job.delievered
}
alertController.addTextField{(textField) in
textField.text = job.collected
}
alertController.addAction(updatedAction)
alertController.addAction(deleteAction)
present(alertController, animated: true, completion: nil)
}
func updatedJob(id: String, collected: String, delievered: String){
let job = [
"id": id,
"collected": collected,
"delivered": delievered]
ref.child(id).setValue(job)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell
let job: JobModel
job = jobList[indexPath.row]
cell.lblCol.text = job.collection
cell.lblDel.text = job.delivery
cell.lblShip.text = job.shipper
cell.lblCon.text = job.consignee
cell.lblEmai.text = job.email
cell.lblRef.text = job.reference
cell.lblFreight.text = job.freight
cell.collected.text = job.collected
cell.delivered.text = job.delievered
return cell }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return jobList.count
}
override func viewDidLoad() {
super.viewDidLoad()
if FirebaseApp.app() == nil {
FirebaseApp.configure() }
ref = Database.database().reference().child("jobs");
ref.observe(DataEventType.value) { (snapshot) in
if snapshot.childrenCount>0 {
self.jobList.removeAll()
for jobs in snapshot.children.allObjects as! [DataSnapshot]{
let jobObject = jobs.value as? [String: AnyObject]
let jobId = jobObject?["id"]
let jobShipper = jobObject?["shipper"]
let jobConsignee = jobObject?["consignee"]
let jobEmail = jobObject?["email"]
let jobReference = jobObject?["reference"]
let jobFreight = jobObject?["freight"]
let jobCollection = jobObject?["collection date"]
let jobDelivery = jobObject?["delivery date"]
let jobPod = jobObject?["pod"]
let jobCollected = jobObject?["collected"]
let jobDelivered = jobObject?["delivered"]
let job = JobModel(id: jobId as! String?,
shipper: jobShipper as! String?,
consignee: jobConsignee as! String?,
email: jobEmail as! String?,
reference: jobReference as! String?,
freight: jobFreight as! String?,
collection: jobCollection as! String?,
delivery: jobDelivery as! String?,
pod: jobPod as! String?,
collected: jobCollected as! String?,
delivered: jobDelivered as! String?)
self.jobList.append(job)
}
self.tbl.reloadData()
Вот мой код для моей страницы входа в систему:
import UIKit
import Firebase
import FirebaseAuth
class LoginViewController: UIViewController {
static var isAlreadyLaunchedOnce = false
@IBOutlet weak var txtemail: UITextField!
@IBOutlet weak var txtpass: UITextField!
var isSignin:Bool = true
override func viewDidLoad() {
super.viewDidLoad()
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
}
@IBAction func submit(_ sender: UIButton) {
if let email = txtemail.text, let passowrd = txtpass.text
{ Auth.auth().signIn(withEmail: email, password: passowrd) { (user, error) in
if user != nil {
self.performSegue(withIdentifier: "goto", sender : self)
}
else {
let alert = UIAlertController(title: "Username or Password Incorrect", message: nil, preferredStyle: .alert)
let okButton = UIAlertAction(title: "Ok", style: .default, handler: nil)
alert.addAction(okButton)
self.present(alert, animated: true, completion: nil)
}
}
}
}
}
Поэтому мой вопрос заключается в том, как мне использовать firebase Войти в свою учетную записьбазы данных, но вижу только информацию для каждого входа в систему, а не всю базу данных, потому что в настоящее время я вижу всю базу данных в табличном представлении.