简体   繁体   中英

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM