FirebaseRxSwiftExtensions 2.0.10

FirebaseRxSwiftExtensions 2.0.10

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2016年5月
SPM支持 SPM

Maximilian Alexander 维护。



 
依赖项
RxSwift~> 2.5.0
Firebase~> 2.5.1
FirebaseOSX~> 2.5.1
 

FirebaseRxSwiftExtensions

用法

要运行示例项目,克隆仓库,并首先从 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

强烈推荐

使用 DisposeBags

强烈建议在每个控制器中都保持一个 disposeBag。这非常重要,否则在 ViewControllers 被销毁时,Firebase 可能永远不会停止监听。

如果您在 subscribesubscribeNext 块中引用了弱引用变量,请确保使用 [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 文件。