You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.2 KiB
34 lines
1.2 KiB
//
|
|
// toSortedArray.swift
|
|
// RxSwiftExt
|
|
//
|
|
// Created by Joan Disho on 17/02/18.
|
|
// Copyright © 2018 RxSwift Community. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import RxSwift
|
|
|
|
public extension ObservableType {
|
|
/**
|
|
Converts an Observable into another Observable that emits the whole sequence as a single array sorted using the provided closure and then terminates.
|
|
|
|
- parameter by: A comparator closure to sort emitted elements.
|
|
- returns: An observable sequence containing all the sorted emitted elements as an array.
|
|
*/
|
|
func toSortedArray(by: @escaping (Element, Element) -> Bool) -> Single<[Element]> {
|
|
return toArray().map { $0.sorted(by: by) }
|
|
}
|
|
}
|
|
|
|
public extension ObservableType where Element: Comparable {
|
|
/**
|
|
Converts an Observable into another Observable that emits the whole sequence as a single sorted array and then terminates.
|
|
|
|
- parameter ascending: Should the emitted items be ascending or descending.
|
|
- returns: An observable sequence containing all the sorted emitted elements as an array.
|
|
*/
|
|
func toSortedArray(ascending: Bool = true) -> Single<[Element]> {
|
|
return toSortedArray(by: { ascending ? $0 < $1 : $0 > $1 })
|
|
}
|
|
}
|