SwiftSortUtils 0.3.0

SwiftSortUtils 0.3.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release May 2017
SwiftSwift Version 3.0.1
SPMSupports SPM

Maintained by Daniel Strittmatter.



  • By
  • Daniel Strittmatter

SwiftSortUtils

Motivation

This library takes a shot at making sorting in Swift more pleasant. It also allows you to reuse your old NSSortDescriptor instances in Swift.

Examples

let somePeople: [Person] = ...

// Sort by a comparable attribute
let ... = somePeople.sort(sortingBy { $0.firstname })

// Sort by multiple attributes
let ... = somePeople.sort(
  sortingBy { $0.age } <|>
  sortingBy { $0.lastname } <|>
  sortingBy { $0.firstname }
)

// Append any comparator function
let ... = somePeople.sort(sortingBy { $0.age } <|> { (p1, p2) in
  if p1.wearsGlasses() && !p2.wearsGlasses() {
    return true
  }
  return false
})

// Reverse compare functions
let ... = somePeople.sort(
  sortingBy(.Descending) { $0.age } <|>
  sortingBy { $0.lastname } <|>
  reverseComparator(sortingBy { $0.firstname }) // reverse any compare function
)

// Use an NSSortDescriptor
let ageSortDescriptor = NSSortDescriptor(key: "age", ascending: true)
let ... = somePeople.sort(ageSortDescriptor.toCompareFunction())

// Even Use multiple NSSortDescriptors
let nameSortDescriptors = [
  NSSortDescriptor(key: "lastname", ascending: true),
  NSSortDescriptor(key: "firstname", ascending: true)
]
let ... = somePeople.sort(nameSortDescriptors.toCompareFunction())

See the tests for more examples.

Usage

To run the example project, clone the repo, and run pod install from the Example directory first.

Installation

SwiftSortUtils is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "SwiftSortUtils"

Author

Daniel Strittmatter, [email protected]

License

SwiftSortUtils is available under the MIT license. See the LICENSE file for more info.