测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2016年5月 |
SPM支持 SPM | ✗ |
由 Maximilian Alexander 维护。
依赖项 | |
RxSwift | ~> 2.5.0 |
Firebase | ~> 2.5.1 |
FirebaseOSX | ~> 2.5.1 |
要运行示例项目,克隆仓库,并首先从 Example 目录中运行 pod install
此库是在 Swift 2.2 上构建的,需要 Xcode 7 或更高版本才能运行。此库是为 RxSwift 2.5 或更高版本构建的。请注意从 Swift 旧版本迁移到 Swift 2 或更高版本的语法更改。
FirebaseRxSwiftExtensions 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:
pod "FirebaseRxSwiftExtensions"
import Firebase import RxSwift import FirebaseRxSwiftExtensions
强烈建议在每个控制器中都保持一个 disposeBag
。这非常重要,否则在 ViewControllers 被销毁时,Firebase 可能永远不会停止监听。
如果您在 subscribe
或 subscribeNext
块中引用了弱引用变量,请确保使用 [unowned self]
来防止循环引用。
例如
var disposeBag = DisposeBag()
@IBOutlet weak var nameLabel: UILabel!
override func viewDidLoad(animated: bool)
// .. stuff
query.rx_observe(FEventType.ChildAdded)
.subscribeNext{ [unowned self] snapshot in
self.nameLabel.text = snapshot.value["name"] as! String
}
.addDisposableTo(disposeBag)
}
rx_observe(eventType: FEventType)
方法用于观察 Firebase 引用或 FQuery 的快照。
let query = Firebase(url: "myUrl").queryOrderedByChild("height")
query.rx_observe(.ChildAdded)
.subscribeNext{ (snapshot: FDataSnapshot) in
//do something with your snapshot
}
To listen for a snapshot and it's siblingKey. This is useful events like FEventType.ChildMoved and FEventType.ChildChanged
let query = Firebase(url: "myUrl").queryOrderedByChild("height")
query.rx_observeWithSiblingKey(.ChildRemoved)
.subscribeNext{ (tuple: (FDataSnapshot, String) in
// The tuple contains the snapshot and the sibling key
}
实用提示:您可以为元组的部分命名以简化操作
let query = Firebase(url: "myUrl").queryOrderedByChild("height")
query.rx_observeWithSiblingKey(.ChildRemoved)
.subscribeNext{ (tuple: (snapshot: FDataSnapshot, siblingKey: String) in
// The tuple contains the snapshot and the sibling key
print(tuple.snapshot)
print(tuple.siblingKey)
}
我没有创建一个 observeSingleEvent rx 方法。只需对 FQuery 或 Firebase 引用执行 take(1)
即可。
queryOrRef.rx_observe(.ChildAdded).take(1)
.subscribeNext{ (snapshot: FDataSnapshot) in
//this snapshot is fired once and the listener is disposed of as soon as it fires just once.
}
这些操作相对简单直接。它们的工作方式与它们的原生 Firebase 类似
rx_setValues
rx_updateChildValues
您可以轻松地观察您的身份验证状态
let ref = Firebase(url: "myUrl")
ref.rx_authObservable()
.subscribeNext{ authData in
if let authData == authData {
print("You're logged in, authData is not nil")
}else{
print("You are NOT logged in")
}
}
您可以使用相应的方法进行身份验证
rx_auth(email: String, password: String) -> Observable<FAuthData>
rx_authWithCustomToken(customToken: String) -> Observable<FAuthData>
rx_authWithOAuthProvider(provider: String, token: String) -> Observable<FAuthData>
rx_authWithOAuthProvider(provider: String, parameters: [NSObject: AnyObject]) -> Observable<FAuthData>
rx_authAnonymously() -> Observable<FAuthData>
rx_createUser(username: String, password: String) -> Observable<[NSObject: AnyObject]>
将提供更多身份验证方法!
您可以通过这两种扩展方法检查快照是否具有值。它们操作于 Observable
rx_filterWhenNSNull()
rx_filterWhenNotNSNull()
Maximilian Alexander, [email protected]
FirebaseRxSwiftExtensions 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。