T21SortingDescriptorSwift 2.3.0

T21SortingDescriptorSwift 2.3.0

Marcos MoleroSalvador Martin 维护。



  • 作者是
  • Eloi Guzman Ceron

#T21SortingDescriptor

一个用于轻松使用排序描述符的帮助类型。

Carthage compatible CocoaPods compatible Swift compatible Platform compatible License SwiftPM

T21SortingDescriptorSwift 提供了一个帮助类型,用于以轻松的方式使用排序描述符。排序描述符还可以组合以创建不同的排序级别。

Swift 标准语言不包括 SortDescriptor 类型。我们可以使用 Objective-C API 的 NSSortDescrptor 类,但这将导致我们必须使用 NSArray 来处理我们的集合(导致代码中丑陋的类型转换以及其他问题)。

安装

T21SortingDescriptorSwift 通过 CarthageCocoaPodsSwift 包管理器 提供。

Carthage

要使用 Carthage 安装 T21SortingDescriptorSwift,请将以下行添加到您的 Cartfile 中。

github "worldline-spain/T21SortingDescriptorSwift"

然后运行 carthage update --no-use-binaries 命令或只是运行 carthage update。有关 Carthage 的安装和使用详情,请访问 其项目页面

CocoaPods

要使用 CocoaPods 安装 T21SortingDescriptorSwift,请将以下行添加到您的 Podfile 中。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0' 
use_frameworks!

pod 'T21SortingDescriptorSwift'

然后运行 pod install 命令。有关 CocoaPods 的安装和使用详情,请访问 其官方网站

Swift 包管理器

要使用苹果的 Swift 包管理器进行集成,请将以下内容作为依赖项添加到您的 Package.swift 文件中。

.package(url: "https://github.com/worldline-spain/T21SortingDescriptorSwift.git", .upToNextMajor(from: "2.3.0"))

有关 Swift 包管理器的安装和使用详情,请访问其官方网站

如何使用

简单 SortDescriptor

使用第一个函数参数获取要比较的所需键,然后使用比较函数作为第二个参数创建一个简单的 SortDescriptor。此方法在从对象获取键时提供了很大的灵活性。

在下面的示例中,我们将对人员的数组进行排序。

public class Person {
    
    public var age: Int
    public var name: String
    
    public init(_ age: Int, _ name: String) {
        self.age = age
        self.name = name
    }
}

let personsToSort = [Person(29,"Tom"),Person(10,"Jack"),Person(54,"Ana"),Person(24,"Maria")]
let sortingDescriptor: SortDescriptor<Person> = sortDescriptor({ $0.age })
let personsSortedByAge = personsToSort.sorted(by: sortingDescriptor)

/* Output
	Jack: 10
	Maria: 24
	Tom: 29
	Ana: 54
*/

组合 SortDescriptor

以下示例中,我们将两个不同的排序描述符合并以应用两层排序。

let personsToSort = [Person(29,"Tom"),Person(10,"Jack"),Person(54,"Ana"),Person(24,"Maria"),Person(24,"Aurora"),Person(29,"Daniel")]
let sortingDescriptorByAge: SortDescriptor<Person> = sortDescriptor({ $0.age }, >)
let sortingDescriptorByName: SortDescriptor<Person> = sortDescriptor(key: { $0.name }, String.localizedCaseInsensitiveCompare)
let combinedSortingDescriptor = combine(sortDescriptors: [sortingDescriptorByAge,sortingDescriptorByName])
let personsSortedByAgeAndName = personsToSort.sorted(by: combinedSortingDescriptor)

/* Output
	Ana: 54
	Daniel: 29
	Tom: 29
	Aurora: 24
	Maria: 24
	Jack: 10
*/

作者

  • 埃洛伊·古兹曼·塞隆 - 初次尝试
  • 埃德温·佩纳 - 初次尝试
  • 萨尔瓦多·马丁 - 初次尝试
  • 马克奥斯·莫利罗 - Swift 5 集成,Carthage 和 Swift 包管理器集成
  • 阿南·萨迪亚 - Swift 5 集成,Carthage 和 Swift 包管理器集成

有关参与此项目的贡献者列表请查看。

许可协议

本项目遵循Apache 2.0 许可协议 - 详细信息请参阅LICENSE.md文件

致谢

  • 向Worldline Spain iOS开发团队致敬。