FirebaseHelper 是 Firebase 实时数据库的一个小封装,提供简化的方法用于获取、设置、删除和增加值。
Swift 4
FirebaseHelper 通过 CocoaPods 提供。要安装
它,只需将以下行添加到您的 Podfile 中
pod 'FirebaseHelper'
初始化 FirebaseHelper
实例
import Firebase
import FirebaseHelper
let firebaseHelper = FirebaseHelper(FirebaseDatabase.Database.database().reference())
FirebaseHelper(_ ref: DatabaseReference)
接收一个 DatabaseReference
。通常你想要这个是数据库的根。
为了方便,您可以为项目添加以下内容
extension FirebaseHelper {
static let main: FirebaseHelper = {
FirebaseHelper(FirebaseDatabase.Database.database().reference())
}()
}
现在您可以在项目的任何地方简单调用 FirebaseHelper.main
以访问此 FirebaseHelper
实例。
示例
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()
接收一个可变参数的子节点,这些节点将构建在初始化 FirebaseHelper
实例时初始化的 DatabaseReference
上。
回调返回一个 Result
public enum Result<T, Error> {
case success(T)
case failure(Error)
}
在这种情况下, T
是 DataSnapshot
。错误情况要么是因为传递了无效的子节点,要么是在数据库中出现了其他错误。
set()
、delete()
和 increment()
工作方式类似,但它们要么返回一个错误(如果发生),要么在无错误的情况下返回 nil
。
示例
// 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)
注意:您应该只
set
接受的值类型。请参阅 Firebase 文档。
您经常需要调用更复杂的 FirebaseDatabase
函数,如构建查询并在其上调用 observe(_ eventType: with block:)
。 FirebaseHelper
仍然可以帮助您做到这一点
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 -> DatabaseReference
makeReference
如果传递了无效的子节点,将引发错误。
FirebaseHelper 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。