user6631314
user6631314

Reputation: 1966

Connecting to Firebase in IOS

Following various tutorials most of which seem to be from a couple years ago, I am trying to connect to Firebase from an IOS app and having trouble with how and where to import the libraries and, in turn, connect to the database.

In my app delegate, I am able to establish a connection--I think---inside the difFinishLaunching method (I say I think because Firebase does not recognize the app in the console but this seems to be a frequent occurrence so I'm ignoring that and just trying to get the app to build in Xcode for now) as follows:

import UIKit
import FirebaseAnalytics
import FirebaseDatabase
import FirebaseCore 

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
            FirebaseApp.configure()
            let myDB = Database.database().reference().child("items")
            }     
            return true
        }

That seems okay in that it builds.

When I try to put a reference to the database in a viewcontroller, however, it throws an error on Database:

import UIKit
import FirebaseCore
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

let ref = Database.database().reference(withPath: "items") //THIS LINE THROWS ERROR

What do I need to do to create a property for the Database in a view controller?

Edit: Looking at some other answers on SO, it seems I may have to create a singleton reference to the db connection. If so, where would I put this and how would I reference it?

Thanks for any suggestions

Upvotes: 0

Views: 258

Answers (1)

Jay
Jay

Reputation: 35657

First, your AppDelegate should look something like this

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }

then, in your first viewController like this:

import UIKit
import Firebase

class ViewController: UIViewController {

    var db: Firestore!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.db = Firestore.firestore()

        //do something with Firestore
        var ref: DocumentReference? = nil
        ref = db.collection("users").addDocument(data: [
            "first": "Ada",
            "last": "Lovelace",
            "born": 1815
        ]) { err in
            if let err = err {
                print("Error adding document: \(err)")
            } else {
                print("Document added with ID: \(ref!.documentID)")
            }
        }

    }
}

Keep in mind I have set my Firestore rules to allow anyone to read/write, which is dangerous so please start working through the Authentication guide once you get this working.

Note that the above code pretty much came straight from the Getting Started guides Add Firebase To An App and Installation and setup

Upvotes: 1

Related Questions