RxOptional 5.0.2

RxOptional 5.0.2

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布上次发布2021 年 3 月
SPM支持 SPM

Ash FurrowTony ArnoldRxOptional MaintainersRxSwift Community 维护。



 
依赖
RxSwift~> 6.0
RxCocoa~> 6.0
 

  • 作者
  • RxSwift Community

RxOptional

CircleCI Version License Platform

为 Swift 的可选项和 "Occupiable" 类型扩展的 RxSwift。

使用方法

除非特别说明,所有操作符也适用于 DriverSignal

可选项操作符

filterNil
Observable<String?>
    .of("One", nil, "Three")
    .filterNil()
    // Type is now Observable<String>
    .subscribe { print($0) }
next(One)
next(Three)
completed
replaceNilWith
Observable<String?>
    .of("One", nil, "Three")
    .replaceNilWith("Two")
    // Type is now Observable<String>
    .subscribe { print($0) }
next(One)
next(Two)
next(Three)
completed
errorOnNil

Driver 中不可用,因为 Driver 无法抛出错误。

默认情况下,使用 RxOptionalError.foundNilWhileUnwrappingOptional 抛出错误。

Observable<String?>
    .of("One", nil, "Three")
    .errorOnNil()
    // Type is now Observable<String>
    .subscribe { print($0) }
next(One)
error(Found nil while trying to unwrap type <Optional<String>>)
catchOnNil
Observable<String?>
    .of("One", nil, "Three")
    .catchOnNil {
        return Observable<String>.just("A String from a new Observable")
    }
    // Type is now Observable<String>
    .subscribe { print($0) }
next(One)
next(A String from a new Observable)
next(Three)
completed
distinctUntilChanged
Observable<Int?>
    .of(5, 6, 6, nil, nil, 3)
    .distinctUntilChanged()
    .subscribe { print($0) }
next(Optional(5))
next(Optional(6))
next(nil)
next(Optional(3))
completed

可占用算子

可占用的有

  • 字符串
  • 数组
  • 字典
  • 集合

目前 Swift 协议无法扩展以符合其他协议。目前以上列出的类型符合 Occupiable。您还可以将自定义类型符合 Occupiable

filterEmpty
Observable<[String]>
    .of(["Single Element"], [], ["Two", "Elements"])
    .filterEmpty()
    .subscribe { print($0) }
next(["Single Element"])
next(["Two", "Elements"])
completed
errorOnEmpty

Driver 中不可用,因为 Driver 无法抛出错误。

默认情况下,使用 RxOptionalError.emptyOccupiable 抛出错误。

Observable<[String]>
    .of(["Single Element"], [], ["Two", "Elements"])
    .errorOnEmpty()
    .subscribe { print($0) }
next(["Single Element"])
error(Empty occupiable of type <Array<String>>)
当空时捕获
Observable<[String]>
    .of(["Single Element"], [], ["Two", "Elements"])
    .catchOnEmpty {
        return Observable<[String]>.just(["Not Empty"])
    }
    .subscribe { print($0) }
next(["Single Element"])
next(["Not Empty"])
next(["Two", "Elements"])
completed

运行示例.playground

  • 在示例目录中运行 pod install
  • 选择 RxOptional 示例目标
  • 构建
  • 显示调试区域(cmd+shift+Y)
  • 在调试区域中单击蓝色播放按钮

要求

安装

CocoaPods

RxOptional 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'RxOptional'

Carthage

将其添加到 Cartfile

github "RxSwiftCommunity/RxOptional" ~> 4.1.0
$ carthage update

Swift Package Manager

要使用RxOptional作为Swift Package Manager包,只需在您的Package.swift文件中添加以下内容。

import PackageDescription

let package = Package(
    name: "ProjectName",
    dependencies: [
        .Package(url: "https://github.com/RxSwiftCommunity/RxOptional")
    ]
)

作者

Thane Gill,[email protected]

许可证

RxOptional在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。