SwiftSortUtils 0.5.0

SwiftSortUtils 0.5.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2021年10月
SPM支持 SPM

Daniel Strittmatter 维护。



  • Daniel Strittmatter

SwiftSortUtils

CI Status Version License Platform

动机

这个库尝试让 Swift 中的比较和排序更加愉悦。它还允许你在 Swift 中复用旧的 NSSortDescriptor 实例。

示例

let somePeople: [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
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(by: nameSortDescriptors.toCompareFunction())

请查看测试以获取更多示例。

用法

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install 命令。

安装

Swift版本

SwiftSortUtils的这个版本是为与Swift 5一起使用而设计的。

CocoaPods

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

pod "SwiftSortUtils"

手动

下载Pod/Classes中的文件,并将它们拖放到您的项目中。

作者

Daniel Strittmatter, [email protected]

许可协议

SwiftSortUtils可在MIT许可协议下获得。更多信息,请参阅LICENSE文件。