You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This library takes a shot at making comparing and sorting in Swift more pleasant. It also allows you to reuse your old NSSortDescriptor instances in Swift.
Examples
letsomePeople:[Person]=...
// Sort by a single comparable attribute
let...=somePeople.sort(by:compareBy(\.firstname))let...=somePeople.sort(by:compareBy{ $0.firstname })let...=somePeople.sort(by:compareBy(.descending, \.firstname))let...=somePeople.sort(byComparing: \.firstname)let...=somePeople.sort(byComparing: \.firstname, ordering:.descending)
// Sort by multiple attributes
let...=somePeople.sort(by:compareBy{ $0.age }<|>
compareBy { $0.lastname }<|>compareBy(\.firstname))
// With less cumbersome syntax:
let...=somePeople.sort(by: \.age <|> \.firstname <|> \.lastname)let...=somePeople.sort(byComparing:[\.firstname, \.lastname]) // monomorphic
// Append any comparator function
let...=somePeople.sort(by:compareBy{ $0.age }<|>{(p1, p2)in p1.wearsGlasses() && !p2.wearsGlasses()})
// Reverse compare functions
let...=somePeople.sort(by:compareBy(.descending){ $0.age }<|>
compareBy { $0.lastname }<|>reverseComparator(compareBy(\.firstname)) // reverse any compare function
)
// Mix and match extractor and compare functions:
let...=somePeople.sort(by:compareBy(.descending, \.age)<|>
\.firstname <|>
\.lastname <|>reverseComparator(myCompareFunction))
// Use an NSSortDescriptor
letageSortDescriptor=NSSortDescriptor(key:"age", ascending:true)let...=somePeople.sort(ageSortDescriptor.toCompareFunction())
// Even Use multiple NSSortDescriptors
letnameSortDescriptors=[NSSortDescriptor(key:"lastname", ascending:true),NSSortDescriptor(key:"firstname", ascending:true)]let...=somePeople.sort(by: 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
Swift Version
This Version of SwiftSortUtils is meant to be used with Swift 5.
CocoaPods
SwiftSortUtils is available through CocoaPods. To install
it, simply add the following line to your Podfile:
pod"SwiftSortUtils"
Manually
Download the files in Pod/Classes and drop them into your project.