23/07/2019, 12:33

RxSwiftExt: Các toán tử tiện lợi, tiện ích mở rộng cho RxSwift 2019

Nếu bạn đang sử dụng RxSwift, bạn có thể đã gặp phải tình huống trong đó các toán tử tích hợp không mang lại chức năng chính xác mà bạn muốn. RxSwift đang được cố ý giữ gọn nhất có thể để tránh phình to. Mục đích của kho lưu trữ này là cung cấp thêm các toán tử tiện lợi và Tiện ích mở ...

Nếu bạn đang sử dụng RxSwift, bạn có thể đã gặp phải tình huống trong đó các toán tử tích hợp không mang lại chức năng chính xác mà bạn muốn. RxSwift đang được cố ý giữ gọn nhất có thể để tránh phình to. Mục đích của kho lưu trữ này là cung cấp thêm các toán tử tiện lợi và Tiện ích mở rộng. RxSwiftExt https://github.com/RxSwiftCommunity/RxSwiftExt là một dự án khác sống dưới RxSwiftCommunity. Hôm nay tôi sẽ giúp bạn tìm hiểu về một vài trong số chúng ở đây.

unwrap

Một trong những nhu cầu phổ biến nhất của các nhà phát triển Swift là khả năng chuyển đổi các luồng tùy chọn thành các luồng không tùy chọn. Để xử lý điều này, RxSwiftExt cung cấp toán tử unwrap():

 let source: Observable<Int?> = Observable.of(1,2,nil,Int?(4))
let unwrapped: Observable<Int> = source.unwrap()

Các phần tử được unwrap mở ra từ Optional< T > và tất cả giá trị nil sẽ được loại bỏ sau khi unwrap.

distinct

Khi xử lý một chuỗi các giá trị, bạn mong muốn mỗi phần tử chỉ nhìn thấy một lần. Đối với điều này, bạn có thể sử dụng toán tử distinct():

_ = Observable.of("a","b","a","c","b","a","d")
  .distinct()
  .toArray()
  .subscribe(onNext: { print($0) })

Chỉ một giá trị riêng biệt sẽ được giữ, sau đó toArray() (toán tử của RxSwift) sẽ nhóm tất cả chúng trong một mảng duy nhất. Khi hoàn thành, bạn sẽ nhận được một mảng duy nhất:

["a","b","c","d"]

mapAt

Keypath trong Swift là một cách mạnh mẽ để xác định nơi lấy dữ liệu. Toán tử mapAt (_            </div>
            
            <div class=

0