CocoaPods trunk is moving to be read-only. Read more on the blog, there are 14 months to go.
| TestsTested | ✓ |
| LangLanguage | SwiftSwift |
| License | MIT |
| ReleasedLast Release | Jan 2018 |
| SPMSupports SPM | ✗ |
Maintained by Quan Vo.
FirebaseHelper is a small wrapper over Firebase's realtime database, providing streamlined methods for get, set, delete, and increment values.
Swift 4
FirebaseHelper is available through CocoaPods. To install
it, simply add the following line to your Podfile:
pod 'FirebaseHelper'Initialize an instance of FirebaseHelper:
import Firebase
import FirebaseHelper
let firebaseHelper = FirebaseHelper(FirebaseDatabase.Database.database().reference())FirebaseHelper(_ ref: DatabaseReference) takes in a DatabaseReference. Generally you'd want this to be the root of your database.
For convenience, you can add something like this to your project:
extension FirebaseHelper {
static let main: FirebaseHelper = {
FirebaseHelper(FirebaseDatabase.Database.database().reference())
}()
}And now you can simply call FirebaseHelper.main to access this instance of FirebaseHelper from anywhere in your project.
Example:
FirebaseHelper.main.get("users", "john123", "favoriteFood") { result in
switch result {
case .failure(let error):
// handle error
case .success(let data):
// get string from data
}
}API:
public func get(_ first: String, _ rest: String..., completion: @escaping (Result<DataSnapshot, Error>) -> Void)get() takes in a variadic parameter of child nodes that will be built on the DatabaseReference you initialized your instance of FirebaseHelper on.
The callback returns a Result:
public enum Result<T, Error> {
case success(T)
case failure(Error)
}In this case, T is DataSnapshot. An error case will either be because an invalid child was passed in or some other error in your database.
set(), delete(), and increment() work similarly, but instead of returning a Result, they simply return an Error if one occurred, or nil otherwise.
Examples:
// The first parameter is an `Any` that gets set at the specified path.
FirebaseHelper.main.set("pizza", at: "users", "john123", "favoriteFood") { error in
if let error = error {
// handle error
}
}
FirebaseHelper.main.delete("users", "john123", "favoriteFood") { error in
if let error = error {
// handle error
}
}
FirebaseHelper.main.increment(by: 5, "users", "john123", "favoriteFoodEatenThisMonth") {
if let error = error {
// handle error
}
}APIs:
public func set(_ value: Any, at first: String, _ rest: String..., completion: @escaping (Error?) -> Void)
public func delete(_ first: String, _ rest: String..., completion: @escaping (Error?) -> Void)
public func increment(by amount: Int, at first: String, _ rest: String..., completion: @escaping (Error?) -> Void)Note: You should only
set()accepted value types. See Firebase docs.
You will often need to call more complex FirebaseDatabase functions, such as building a query and calling observe(_ eventType: with block:) on it. FirebaseHelper can still help with that:
let ref = try? FirebaseHelper.main.makeReference("users", "john123", "eatingHistory")
let handle = ref?.queryOrdered(byChild: "timestamp").queryLimited(toLast: 50).observe(.value) { data in
// handle data
}API:
public func makeReference(_ first: String, _ rest: String...) throws -> DatabaseReferencemakeReference will throw an error if passed an invalid child.
FirebaseHelper is available under the MIT license. See the LICENSE file for more info.