Sean Cook
Sean Cook

Reputation: 435

Firebase completion listeners in swift

How do you execute a completion listener for firebase in swift? It says there are completion listers for SetValue and UpdateValue in the docs but there is no example.

Upvotes: 3

Views: 3039

Answers (3)

Ashvini
Ashvini

Reputation: 352

  • For setValue in Firebase you can write completion blocks as below:

    let ref = Database.database().reference().child("somepath")
    ref.setValue("value") { (error, databaseRef) in
       if error != nil {
           print("Error for setting value")
       } else {
           print("Value set successfully.")
       }
    }
    
  • For updateValue in Firebase:

    let newKeyValueData:[String:Any] = ["key1":"value1", "key2":value2] as [String:Any]
    ref.updateChildValues(["someKey":"value"]) { (error, dbRef) in
       if error != nil {
           print("Error for updating value")
       } else {
           print("Value updated successfully.")
       }  
    }
    

Upvotes: 0

Jay
Jay

Reputation: 35667

The completion of a setValue is handled within the {} block (closure). So once the attempt to setValue is made, the code within that block executes. error will be nil if none and snapshot will be the data that was written.

let ref = self.myRootRef.child("some_path")
    ref.setValue("Hello", withCompletionBlock: { (error, snapshot) in
        if error != nil {
            print("oops, an error")
        } else {
            print("completed")
        }
    })

gives a result of

root_ref
   some_path: Hello

and prints "completed"

Upvotes: 7

sant05
sant05

Reputation: 428

An example of using completion handler for setValue in firebase is given below. Similarly you can use completion handler for methods.

    func saveJob(completion:(Bool)-> Void) {
    FIRDatabase.database().reference().child("Job").setValue(["Title":self.title!,"Detail":self.details!], withCompletionBlock: { (error, ref) in
        debugPrint("Completed")
        completion(true)
    })
}

Upvotes: 1

Related Questions