2017-12-28 11:30:44 +01:00
2017-12-28 11:30:44 +01:00
2017-10-21 12:30:56 +02:00
2017-12-27 20:05:43 +01:00
2017-10-21 12:30:56 +02:00
2017-12-28 10:59:01 +01:00

CodableFirebase

Use Codable with Firebase

Carthage compatible Build Status codecov

Overview

This library helps you to use your custom type that conform to Codable protocol with Firebase. Here's an example of model:

struct Model: Codable {
    let stringExample: String
    let booleanExample: Bool
    let numberExample: Double
    let dateExample: Date
    let arrayExample: [String]
    let nullExample: Int?
    let objectExample: [String: String]
}

Firebase Database usage

This is how you would use the library with Firebase Realtime Database:

import Firebase
import CodableFirebase

let model: Model // here you will create an instance of Model
let data = try! FirebaseEncoder().encode(model)

Database.database().reference().child("model").setValue(data)

And here is how you would read the same value from Firebase Realtime Database:

Database.database().reference().child("model").observeSingleEvent(of: .value, with: { (snapshot) in
    guard let value = snapshot.value else { return }
    do {
        let model = try FirebaseDecoder().decode(Model.self, from: value)
        print(model)
    } catch let error {
        print(error)
    }
})

Firestore usage

And this is how you would encode it with Firebase Firestore:

import Firebase
import CodableFirebase

let model: Model // here you will create an instance of Model
let docData = try! FirestoreEncoder().encode(model)
Firestore.firestore().collection("data").document("one").setData(docData) { err in
    if let err = err {
        print("Error writing document: \(err)")
    } else {
        print("Document successfully written!")
    }
}

And this is how you would decode the same model with Firebase Firestore:

Firestore.firestore().collection("data").document("one").getDocument { (document, error) in
    if let document = document {
        let model = try! FirestoreDecoder().decode(Model.self, from: document.data())
        print("Model: \(model)")
    } else {
        print("Document does not exist")
    }
}
Description
No description provided
Readme MIT 162 KiB
Languages
Swift 98.5%
Ruby 1.1%
Objective-C 0.4%